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.delivery.testreg.service.impl; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.commons.beanutils.PropertyUtils; import org.opentestsystem.delivery.testreg.domain.Accommodation; import org.opentestsystem.delivery.testreg.domain.AccommodationResourceType; import org.opentestsystem.delivery.testreg.domain.FormatType; import org.opentestsystem.delivery.testreg.domain.Sb11NonEntity; import org.opentestsystem.delivery.testreg.domain.Student; import org.opentestsystem.delivery.testreg.persistence.Sb11NonEntityRepository; import org.opentestsystem.delivery.testreg.service.MasterResourceAccommodationService; import org.opentestsystem.shared.exception.LocalizedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * Implementation of Accommodation Service. */ @Service("accommodationService") public class AccommodationServiceImpl<T extends Sb11NonEntity> extends Sb11NonEntityServiceImpl<T> { private static final Logger LOGGER = LoggerFactory.getLogger(AccommodationServiceImpl.class); @Resource private Map<FormatType, Sb11NonEntityRepository<Sb11NonEntity>> nonEntityRepositoryMap; @Autowired private MasterResourceAccommodationService masterResourceService; @Resource(name = "templateDownloadMap") private Map<String, List<String>> templateDownloadMap; /** * {@inheritDoc} */ @Override public T saveDomainObject(final T domainObj) { // find student record Accommodation accommodation = (Accommodation) domainObj; setDefaultAccommodations(accommodation); Student student = findByAlternateKey(accommodation.createParentAlternateKeySearchRequest(), Student.class); if (student != null) { // add accommodations //student.getAccommodations ().add (accommodation); nonEntityRepositoryMap.get(student.getFormatType()).save(student); return domainObj; } else { throw new LocalizedException("accommodation.parent.notfound", new String[] { accommodation.getStudentId(), accommodation.getStateAbbreviation() }); } } @Override public List<T> updateDomainObjects(final List<T> inDomainObjList) { List<T> ret = new ArrayList<T>(); if (inDomainObjList != null) { for (T t : inDomainObjList) { ret.add(updateDomainObject(t)); } } return ret; } /** * {@inheritDoc} */ @Override public T updateDomainObject(final T domainObj) { // find student record Accommodation accommodation = (Accommodation) domainObj; setDefaultAccommodations(accommodation); Student student = findByAlternateKey(accommodation.createParentAlternateKeySearchRequest(), Student.class); if (student != null) { /* int index = student.getAccommodations ().indexOf (accommodation); if (index >= 0) { student.getAccommodations ().remove (index); } // add accommodations to student and update student.getAccommodations ().add (accommodation);*/ nonEntityRepositoryMap.get(student.getFormatType()).save(student); return domainObj; } else { throw new LocalizedException("accommodation.parent.notfound", new String[] { accommodation.getStudentId(), accommodation.getStateAbbreviation() }); } } private String getHeaderPropertyName(String headerCode) { String headerAlias = null; switch (headerCode) { case "Zoom": headerAlias = "printSize"; break; case "ColorChoices": headerAlias = "colorContrast"; break; case "TexttoSpeech": headerAlias = "textToSpeech"; default: break; } if (headerAlias != null) { return headerAlias; } /* * if(headerCode.equals ("Zoom")){ headerCode = "printSize"; return * headerCode; } if(headerCode.equals ("ColorChoices")){ headerCode = * "colorContrast"; return headerCode; } */ char c[] = headerCode.toCharArray(); String headerProperty = Character.toLowerCase(c[0]) + headerCode.substring(1); return headerProperty; } private void setDefaultAccommodations(final Accommodation accommodation) { //List<String> headerCodes = templateDownloadMap.get (FormatType.DESIGNATEDSUPPORTSANDACCOMMODATIONS); HashMap<FormatType, List<String>> headerMap = masterResourceService.getAllCodes(); List<String> headerCodes = headerMap.get(FormatType.DESIGNATEDSUPPORTSANDACCOMMODATIONS); HashMap<String, String> defaultOptions = masterResourceService.getAllDefaultOptions(); HashMap<String, String> accResourceTypes = masterResourceService.getAllResourceTypes(); for (String option : headerCodes) { if (defaultOptions.containsKey(option)) { String heaerProperty = getHeaderPropertyName(option); try { Object value = PropertyUtils.getProperty(accommodation, heaerProperty); if (value == null && defaultOptions.get(option) != null) { List<String> defaultList = new ArrayList<String>(); if (accResourceTypes.get(option) .equalsIgnoreCase(AccommodationResourceType.MultiSelectResource.name())) { defaultList.add(defaultOptions.get(option)); PropertyUtils.setProperty(accommodation, heaerProperty, defaultList); } else { PropertyUtils.setProperty(accommodation, heaerProperty, defaultOptions.get(option)); } } } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { e.printStackTrace(); LOGGER.error("Failure in accommodation service can't find field called " + heaerProperty + " in accommodation, invalid rule", e); } } } } }