Java tutorial
/******************************************************************************* * Educational Online Test Delivery System * Copyright (c) 2013 American Institutes for Research * * Distributed under the AIR Open Source License, Version 1.0 * See accompanying file AIR-License-1_0.txt or at * http://www.smarterapp.org/documents/American_Institutes_for_Research_Open_Source_Software_License.pdf ******************************************************************************/ package org.opentestsystem.authoring.testauth.service.impl; import static org.opentestsystem.authoring.testauth.service.impl.ItemHelper.ENEMY_PAIRING_TRANSFORMER; import static org.opentestsystem.authoring.testauth.service.impl.ItemHelper.ITEM_TIB_IDENTIFIER_TRANSFORMER; import java.util.ArrayList; import java.util.List; import org.opentestsystem.authoring.testauth.domain.Enemy; import org.opentestsystem.authoring.testauth.domain.EnemyType; import org.opentestsystem.authoring.testauth.domain.Item; import org.opentestsystem.authoring.testauth.persistence.ItemRepository; import org.opentestsystem.authoring.testauth.service.EnemyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import com.google.common.collect.Lists; @Component public class ItemEnemyRunner { private static final String ENEMY_METADATA_KEY = "EnemyItem"; @Autowired private transient ItemRepository itemRepository; @Autowired private EnemyService enemyService; @Async @SuppressWarnings("unchecked") public void reconcileItemEnemyMetadata(final String assessmentId) { final List<Enemy> newEnemyToSaveList = Lists.newArrayList(); final List<Enemy> existingEnemyList = this.enemyService.getEnemiesByAssessmentId(assessmentId); final List<String> existingEnemyPairings = Lists.transform(existingEnemyList, ENEMY_PAIRING_TRANSFORMER); final List<Item> itemList = this.itemRepository.findAllByAssessmentId(assessmentId); final List<String> allItemTibIdentifiers = Lists.transform(itemList, ITEM_TIB_IDENTIFIER_TRANSFORMER); for (final Item item : itemList) { final Object enemyObject = item.getAllIncludedMetadata().get(ENEMY_METADATA_KEY); if (enemyObject != null && enemyObject instanceof ArrayList) { final String itemIdentifier = item.getTibIdentifier(); final List<String> enemyItemList = (List<String>) enemyObject; for (final String enemyItem : enemyItemList) { if (allItemTibIdentifiers.contains(enemyItem) && !existingEnemyPairings.contains(itemIdentifier + "|" + enemyItem)) { final Enemy enemy = new Enemy(); enemy.setAssessmentId(assessmentId); enemy.setObjectType1(EnemyType.ITEM); enemy.setObjectId1(itemIdentifier); enemy.setObjectType2(EnemyType.ITEM); enemy.setObjectId2(enemyItem); enemy.setObjectIdSearch(new String[] { enemy.getObjectId1(), enemy.getObjectId2() }); newEnemyToSaveList.add(enemy); } } } } this.enemyService.saveEnemyList(newEnemyToSaveList); } }