/**
* Copyright (C) 2012 KRM Associates, Inc. healtheme@krminc.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.krminc.phr.web.form;
import com.krminc.phr.api.service.util.ServiceUtils;
import com.krminc.phr.core.AppConfig;
import com.krminc.phr.dao.PersistenceService;
import com.krminc.phr.domain.HealthRecord;
import java.lang.reflect.InvocationTargetException;
import java.util.Set;
import java.util.logging.Level;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.persistence.EntityManager;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import com.krminc.phr.domain.carenotebook.*;
import com.sun.jersey.api.core.ResourceContext;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.MultivaluedMap;
/**
*
* @author cmccall
*/
public class CareNotebookFormProcessor {
final Logger logger = LoggerFactory.getLogger(CareNotebookFormProcessor.class);
@Context
protected ResourceContext resourceContext;
@Context
protected UriInfo uriInfo;
@Context
HttpServletRequest req;
public CareNotebookFormProcessor() {
}
@Path("{healthRecordId}/emergencyinformation/post/")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response alterEmergencyInformation(
@PathParam("healthRecordId") Long healthRecordId,
@FormParam("ambulancenumber") String ambulancenumber,
@FormParam("firenumber") String firenumber,
@FormParam("policenumber") String policenumber,
@FormParam("poisonnumber") String poisonnumber,
@FormParam("hospitalname") String hospitalname,
@FormParam("hospitalnumber") String hospitalnumber,
@FormParam("hospitaladdress") String hospitaladdress,
@FormParam("hospitaladdress2") String hospitaladdress2,
@FormParam("hospitalcity") String hospitalcity,
@FormParam("hospitalstate") String hospitalstate,
@FormParam("emergencydescription") String emergencydescription,
@FormParam("treatmentdescription") String treatmentdescription,
@FormParam("comments") String comments
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/emergencyinformation/?status=success";
if (!ServiceUtils.isPhoneNumberOrEmpty(ambulancenumber)) {
error = true;
errorString = "ambulancenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(firenumber)) {
error = true;
errorString = "firenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(policenumber)) {
error = true;
errorString = "policenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(poisonnumber)) {
error = true;
errorString = "poisonnumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(hospitalnumber)) {
error = true;
errorString = "hospitalnumber";
}
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
persistenceSvc.beginTx();
EntityManager em = persistenceSvc.getEntityManager();
EmergencyInformation emergencyInfo = em.find(EmergencyInformation.class, healthRecordId);
if (emergencyInfo == null) {
emergencyInfo = new EmergencyInformation(healthRecordId);
}
emergencyInfo.setAmbulanceNumber(ambulancenumber);
emergencyInfo.setComments(comments);
emergencyInfo.setDataSourceId(healthRecordId);
emergencyInfo.setFireNumber(firenumber);
emergencyInfo.setHospitalAddress(hospitaladdress);
emergencyInfo.setHospitalAddress2(hospitaladdress2);
emergencyInfo.setHospitalCity(hospitalcity);
emergencyInfo.setHospitalName(hospitalname);
emergencyInfo.setHospitalNumber(hospitalnumber);
emergencyInfo.setHospitalState(hospitalstate);
emergencyInfo.setPoisonNumber(poisonnumber);
emergencyInfo.setPoliceNumber(policenumber);
em.merge(emergencyInfo);
persistenceSvc.commitTx();
} catch (Exception e) {
logger.error("Emergency Information Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/emergencyinformation/?status=" + errorString;
logger.error("redirecting to error URI: {}", redirectUri);
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/insuranceinformation/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterInsuranceInformation(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/insuranceinformation/?status=success";
List<InsuranceInformation> insuranceInformationList = remap(formParams, InsuranceInformation.class, healthRecordId);
//validate it all
for (InsuranceInformation ii : insuranceInformationList) {
if (!ServiceUtils.isPhoneNumberOrEmpty(ii.getBenefitsNumber())) {
error = true;
errorString = "benefitsnumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(ii.getPreauthorizationNumber())) {
error = true;
errorString = "preauthorizationnumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(ii.getPreadmissionNumber())) {
error = true;
errorString = "preadmissionnumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(ii.getFaxNumber())) {
error = true;
errorString = "faxnumber";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (InsuranceInformation ii : insuranceInformationList) {
if (res) {
persistenceSvc.beginTx();
if (ii.getInsuranceinformationId() != null) {
InsuranceInformation existingInsuranceInfo = em.find(InsuranceInformation.class, ii.getInsuranceinformationId());
if (existingInsuranceInfo.getHealthRecordId().compareTo(healthRecordId) == 0) {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Insurance Information Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/insuranceinformation/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/specialtyclinics/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterSpecialtyClinics(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/specialtyclinics/?status=success";
List<SpecialtyClinic> clinicList = remap(formParams, SpecialtyClinic.class, healthRecordId);
//validate it all
for (SpecialtyClinic ii : clinicList) {
if (!ServiceUtils.isPhoneNumberOrEmpty(ii.getPhoneNumber())) {
error = true;
errorString = "phonenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(ii.getFaxNumber())) {
error = true;
errorString = "faxnumber";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (SpecialtyClinic ii : clinicList) {
if (res) {
persistenceSvc.beginTx();
if (ii.getSpecialtyclinicId() != null) {
SpecialtyClinic existingClinicInfo = em.find(SpecialtyClinic.class, ii.getSpecialtyclinicId());
if (existingClinicInfo.getHealthRecordId().compareTo(healthRecordId) == 0) {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Specialty Clinic Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/specialtyclinics/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/pharmacies/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterPharmacies(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/pharmacies/?status=success";
List<Pharmacy> pharmacyList = remap(formParams, Pharmacy.class, healthRecordId);
//validate it all
for (Pharmacy i : pharmacyList) {
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getPhoneNumber())) {
error = true;
errorString = "phonenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getFaxNumber())) {
error = true;
errorString = "faxnumber";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (Pharmacy i : pharmacyList) {
if (res) {
persistenceSvc.beginTx();
if (i.getPharmacyId() != null) {
Pharmacy existingEntry = em.find(Pharmacy.class, i.getPharmacyId());
if (existingEntry.getHealthRecordId().compareTo(healthRecordId) == 0) {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Pharmacy Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/pharmacies/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/careproviders/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterCareProviders(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/careproviders/?status=success";
List<CareProvider> providerList = remap(formParams, CareProvider.class, healthRecordId);
//validate it all
for (CareProvider i : providerList) {
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getPhoneNumber())) {
error = true;
errorString = "phonenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getFaxNumber())) {
error = true;
errorString = "faxnumber";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (CareProvider i : providerList) {
if (res) {
persistenceSvc.beginTx();
if (i.getProviderId() != null) {
CareProvider existingEntry = em.find(CareProvider.class, i.getProviderId());
if (existingEntry.getHealthRecordId().compareTo(healthRecordId) == 0) {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Care Provider Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/careproviders/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/contacts/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterFamilyMembers(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/contacts/?status=success";
List<FamilyMember> memberList = remap(formParams, FamilyMember.class, healthRecordId);
Boolean hasAPrimary = false;
//validate it all
for (FamilyMember i : memberList) {
//prevent multiple primary contacts
if (i.getIsPrimary()) {
if (hasAPrimary) {
error = true;
errorString = "isprimary";
} else {
hasAPrimary = true;
}
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getDaytimePhoneNumber())) {
error = true;
errorString = "daytimenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getEveningPhoneNumber())) {
error = true;
errorString = "eveningnumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getFaxNumber())) {
error = true;
errorString = "faxnumber";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (FamilyMember i : memberList) {
if (res) {
persistenceSvc.beginTx();
if (i.getFamilymemberId() != null) {
FamilyMember existingEntry = em.find(FamilyMember.class, i.getFamilymemberId());
if (existingEntry.getHealthRecordId().compareTo(healthRecordId) == 0) {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Emergency Contact Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/contacts/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/familyhistory/post/")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response alterFamilyHistory(
@PathParam("healthRecordId") Long healthRecordId,
@FormParam("mentalIllness") Boolean mentalIllness,
@FormParam("whoMentalIllness") String whoMentalIllness,
@FormParam("cerebralPalsy") Boolean cerebralPalsy,
@FormParam("whoCerebralPalsy") String whoCerebralPalsy,
@FormParam("muscularDystrophy") Boolean muscularDystrophy,
@FormParam("whoMuscularDystrophy") String whoMuscularDystrophy,
@FormParam("epilepsy") Boolean epilepsy,
@FormParam("whoEpilepsy") String whoEpilepsy,
@FormParam("heartDisease") Boolean heartDisease,
@FormParam("whoHeartDisease") String whoHeartDisease,
@FormParam("diabetes") Boolean diabetes,
@FormParam("whoDiabetes") String whoDiabetes,
@FormParam("kidneyDisease") Boolean kidneyDisease,
@FormParam("whoKidneyDisease") String whoKidneyDisease,
@FormParam("cancer") Boolean cancer,
@FormParam("whoCancer") String whoCancer,
@FormParam("thyroidDisease") Boolean thyroidDisease,
@FormParam("whoThyroidDisease") String whoThyroidDisease,
@FormParam("highBloodPressure") Boolean highBloodPressure,
@FormParam("whoHighBloodPressure") String whoHighBloodPressure,
@FormParam("deceasedSiblings") Boolean deceasedSiblings,
@FormParam("whoDeceasedSiblings") String whoDeceasedSiblings,
@FormParam("behaviorDisorder") Boolean behaviorDisorder,
@FormParam("whoBehaviorDisorder") String whoBehaviorDisorder,
@FormParam("tuberculosis") Boolean tuberculosis,
@FormParam("whoTuberculosis") String whoTuberculosis,
@FormParam("hepatitis") Boolean hepatitis,
@FormParam("whoHepatitis") String whoHepatitis,
@FormParam("metabolicDisease") Boolean metabolicDisease,
@FormParam("whoMetabolicDisease") String whoMetabolicDisease,
@FormParam("allergies") Boolean allergies,
@FormParam("whoAllergies") String whoAllergies,
@FormParam("developmentalDisabilities") Boolean developmentalDisabilities,
@FormParam("whoDevelopmentalDisabilities") String whoDevelopmentalDisabilities,
@FormParam("traumaticBrainInjury") Boolean traumaticBrainInjury,
@FormParam("whoTraumaticBrainInjury") String whoTraumaticBrainInjury,
@FormParam("other") String other,
@FormParam("comments") String comments
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/familyhistory/?status=success";
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
persistenceSvc.beginTx();
EntityManager em = persistenceSvc.getEntityManager();
FamilyHistory familyHistory = em.find(FamilyHistory.class, healthRecordId);
if (familyHistory == null) {
familyHistory = new FamilyHistory(healthRecordId);
}
familyHistory.setAllergies(allergies);
familyHistory.setBehaviorDisorder(behaviorDisorder);
familyHistory.setCancer(cancer);
familyHistory.setCerebralPalsy(cerebralPalsy);
familyHistory.setComments(comments);
familyHistory.setDeceasedSiblings(deceasedSiblings);
familyHistory.setDevelopmentalDisabilities(developmentalDisabilities);
familyHistory.setDiabetes(diabetes);
familyHistory.setEpilepsy(epilepsy);
familyHistory.setHeartDisease(heartDisease);
familyHistory.setHepatitis(hepatitis);
familyHistory.setHighBloodPressure(highBloodPressure);
familyHistory.setKidneyDisease(kidneyDisease);
familyHistory.setMentalIllness(mentalIllness);
familyHistory.setMetabolicDisease(metabolicDisease);
familyHistory.setMuscularDystrophy(muscularDystrophy);
familyHistory.setOther(other);
familyHistory.setThyroidDisease(thyroidDisease);
familyHistory.setTraumaticBrainInjury(traumaticBrainInjury);
familyHistory.setTuberculosis(tuberculosis);
familyHistory.setWhoAllergies(whoAllergies);
familyHistory.setWhoBehaviorDisorder(whoBehaviorDisorder);
familyHistory.setWhoCancer(whoCancer);
familyHistory.setWhoCerebralPalsy(whoCerebralPalsy);
familyHistory.setWhoDeceasedSiblings(whoDeceasedSiblings);
familyHistory.setWhoDevelopmentalDisabilities(whoDevelopmentalDisabilities);
familyHistory.setWhoDiabetes(whoDiabetes);
familyHistory.setWhoEpilepsy(whoEpilepsy);
familyHistory.setWhoHeartDisease(whoHeartDisease);
familyHistory.setWhoHepatitis(whoHepatitis);
familyHistory.setWhoHighBloodPressure(whoHighBloodPressure);
familyHistory.setWhoKidneyDisease(whoKidneyDisease);
familyHistory.setWhoMentalIllness(whoMentalIllness);
familyHistory.setWhoMetabolicDisease(whoMetabolicDisease);
familyHistory.setWhoMuscularDystrophy(whoMuscularDystrophy);
familyHistory.setWhoThyroidDisease(whoThyroidDisease);
familyHistory.setWhoTraumaticBrainInjury(whoTraumaticBrainInjury);
familyHistory.setWhoTuberculosis(whoTuberculosis);
familyHistory.setDataSourceId(healthRecordId);
em.merge(familyHistory);
persistenceSvc.commitTx();
} catch (Exception e) {
logger.error("familyhistory Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/familyhistory/?status=" + errorString;
logger.error("redirecting to error URI: {}", redirectUri);
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/nutrition/post/")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response alterNutrition(
@PathParam("healthRecordId") Long healthRecordId,
@FormParam("feedingSchedule") String feedingSchedule,
@FormParam("foodLikes") String foodLikes,
@FormParam("foodDislikes") String foodDislikes,
@FormParam("comments") String comments
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/nutrition/?status=success";
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
persistenceSvc.beginTx();
EntityManager em = persistenceSvc.getEntityManager();
Nutrition nutritionInfo = em.find(Nutrition.class, healthRecordId);
if (nutritionInfo == null) {
nutritionInfo = new Nutrition(healthRecordId);
}
nutritionInfo.setFeedingSchedule(feedingSchedule);
nutritionInfo.setFoodLikes(foodLikes);
nutritionInfo.setFoodDislikes(foodDislikes);
nutritionInfo.setComments(comments);
nutritionInfo.setDataSourceId(healthRecordId);
em.merge(nutritionInfo);
persistenceSvc.commitTx();
} catch (Exception e) {
logger.error("Nutrition Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/nutrition/?status=" + errorString;
logger.error("redirecting to error URI: {}", redirectUri);
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/respiratory/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterRespiratoryLog(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/respiratory/?status=success";
List<RespiratoryCare> log = remap(formParams, RespiratoryCare.class, healthRecordId);
//validate it all
for (RespiratoryCare l : log) {
if (l.getObservedDate() == null) {
error = true;
errorString = "observedDate";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (RespiratoryCare ii : log) {
if (res) {
persistenceSvc.beginTx();
if (ii.getRespiratorycareId() != null) {
RespiratoryCare existingLog = em.find(RespiratoryCare.class, ii.getRespiratorycareId());
if (existingLog.getHealthRecordId().compareTo(healthRecordId) == 0) {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("RespiratoryCare Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/respiratory/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/communication/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterCommunicationLog(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/communication/?status=success";
List<Communication> log = remap(formParams, Communication.class, healthRecordId);
//validate it all
for (Communication l : log) {
if (l.getObservedDate() == null) {
error = true;
errorString = "observedDate";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (Communication ii : log) {
if (res) {
persistenceSvc.beginTx();
if (ii.getCommunicationId() != null) {
Communication existingLog = em.find(Communication.class, ii.getCommunicationId());
if (existingLog.getHealthRecordId().compareTo(healthRecordId) == 0) {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Communication Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/communication/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/mobility/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterMobilityLog(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/mobility/?status=success";
List<Mobility> log = remap(formParams, Mobility.class, healthRecordId);
//validate it all
for (Mobility l : log) {
if (l.getObservedDate() == null) {
error = true;
errorString = "observedDate";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (Mobility ii : log) {
if (res) {
persistenceSvc.beginTx();
if (ii.getMobilityId() != null) {
Mobility existingLog = em.find(Mobility.class, ii.getMobilityId());
if (existingLog.getHealthRecordId().compareTo(healthRecordId) == 0) {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Mobility Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/mobility/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/rest/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterRestLog(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/rest/?status=success";
List<Rest> log = remap(formParams, Rest.class, healthRecordId);
//validate it all
for (Rest l : log) {
if (l.getObservedDate() == null) {
error = true;
errorString = "observedDate";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (Rest ii : log) {
if (res) {
persistenceSvc.beginTx();
if (ii.getRestId() != null) {
Rest existingLog = em.find(Rest.class, ii.getRestId());
if (existingLog.getHealthRecordId().compareTo(healthRecordId) == 0) {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Rest Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/rest/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/social/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterSocialLog(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/social/?status=success";
List<Social> log = remap(formParams, Social.class, healthRecordId);
//validate it all
for (Social l : log) {
if (l.getObservedDate() == null) {
error = true;
errorString = "observedDate";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (Social ii : log) {
if (res) {
persistenceSvc.beginTx();
if (ii.getSocialId() != null) {
Social existingLog = em.find(Social.class, ii.getSocialId());
if (existingLog.getHealthRecordId().compareTo(healthRecordId) == 0) {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Social Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/social/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/stress/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterStressLog(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/stress/?status=success";
List<Stress> log = remap(formParams, Stress.class, healthRecordId);
//validate it all
for (Stress l : log) {
if (l.getObservedDate() == null) {
error = true;
errorString = "observedDate";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (Stress ii : log) {
if (res) {
persistenceSvc.beginTx();
if (ii.getStressId() != null) {
Stress existingLog = em.find(Stress.class, ii.getStressId());
if (existingLog.getHealthRecordId().compareTo(healthRecordId) == 0) {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
ii.setDataSourceId(healthRecordId);
em.merge(ii);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Stress Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/stress/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/transitions/post/")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response alterTransitions(
@PathParam("healthRecordId") Long healthRecordId,
@FormParam("transitionText") String transitionText,
@FormParam("hopesText") String hopesText,
@FormParam("comments") String comments
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/transitions/?status=success";
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
persistenceSvc.beginTx();
EntityManager em = persistenceSvc.getEntityManager();
Transition transitionInfo = em.find(Transition.class, healthRecordId);
if (transitionInfo == null) {
transitionInfo = new Transition(healthRecordId);
}
transitionInfo.setTransitionText(transitionText);
transitionInfo.setHopesText(hopesText);
transitionInfo.setComments(comments);
transitionInfo.setDataSourceId(healthRecordId);
em.merge(transitionInfo);
persistenceSvc.commitTx();
} catch (Exception e) {
logger.error("Transition Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/transitions/?status=" + errorString;
logger.error("redirecting to error URI: {}", redirectUri);
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/employment/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterEmployments(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/employment/?status=success";
List<Employment> employmentList = remap(formParams, Employment.class, healthRecordId);
//validate it all
for (Employment i : employmentList) {
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getPhoneNumber())) {
error = true;
errorString = "phonenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getFaxNumber())) {
error = true;
errorString = "faxnumber";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (Employment i : employmentList) {
if (res) {
persistenceSvc.beginTx();
if (i.getEmploymentId() != null) {
Employment existingEntry = em.find(Employment.class, i.getEmploymentId());
if (existingEntry.getHealthRecordId().compareTo(healthRecordId) == 0) {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Employment Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/employment/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/schools/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterSchools(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/school/?status=success";
List<School> schoolList = remap(formParams, School.class, healthRecordId);
//validate it all
for (School i : schoolList) {
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getSchoolPhoneNumber())) {
error = true;
errorString = "schoolphonenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getSchoolFaxNumber())) {
error = true;
errorString = "schoolfaxnumber";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (School i : schoolList) {
if (res) {
persistenceSvc.beginTx();
if (i.getSchoolId() != null) {
School existingEntry = em.find(School.class, i.getSchoolId());
if (existingEntry.getHealthRecordId().compareTo(healthRecordId) == 0) {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("School Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/school/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/schoolpersonnel/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterSchoolPersonnel(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/schoolpersonnel/?status=success";
List<SchoolPersonnel> personnelList = remap(formParams, SchoolPersonnel.class, healthRecordId);
//validate it all
for (SchoolPersonnel i : personnelList) {
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getDaytimePhoneNumber())) {
error = true;
errorString = "daytimenumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getEveningPhoneNumber())) {
error = true;
errorString = "eveningnumber";
}
if (!ServiceUtils.isPhoneNumberOrEmpty(i.getFaxNumber())) {
error = true;
errorString = "faxnumber";
}
}
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (SchoolPersonnel i : personnelList) {
if (res) {
persistenceSvc.beginTx();
if (i.getPersonnelId() != null) {
SchoolPersonnel existingEntry = em.find(SchoolPersonnel.class, i.getPersonnelId());
if (existingEntry.getHealthRecordId().compareTo(healthRecordId) == 0) {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("School Personnel Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/schoolpersonnel/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/meetings/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterMeetings(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/meetings/?status=success";
List<Meeting> meetingList = remap(formParams, Meeting.class, healthRecordId);
//validate it all
// for (Meeting i : meetingList) {
// }
//all valid, commit it all
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (Meeting i : meetingList) {
if (res) {
persistenceSvc.beginTx();
if (i.getMeetingId() != null) {
Meeting existingEntry = em.find(Meeting.class, i.getMeetingId());
if (existingEntry.getHealthRecordId().compareTo(healthRecordId) == 0) {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("Meeting Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/meetings/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
@Path("{healthRecordId}/nutritionevents/post/")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response alterNutritionEvent(
MultivaluedMap<String,String> formParams,
@PathParam("healthRecordId") Long healthRecordId
) {
Boolean error = false;
String errorString = new String();
String redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/nutritionevents/?status=success";
List<NutritionEvent> eventList = remap(formParams, NutritionEvent.class, healthRecordId);
boolean res = true;
if (!error) {
PersistenceService persistenceSvc = PersistenceService.getInstance();
try {
EntityManager em = persistenceSvc.getEntityManager();
for (NutritionEvent i : eventList) {
if (res) {
persistenceSvc.beginTx();
if (i.getEventId() != null) {
NutritionEvent existingEntry = em.find(NutritionEvent.class, i.getEventId());
if (existingEntry.getHealthRecordId().compareTo(healthRecordId) == 0) {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
} else {
logger.error("Non-matching HRID on merge attempt");
res = false;
}
} else {
i.setDataSourceId(healthRecordId);
em.merge(i);
persistenceSvc.commitTx();
}
}
}
} catch (Exception e) {
logger.error("NutritionEvent Save Failed", e);
res = false;
} finally {
persistenceSvc.close();
}
}
if (!res) {
error = true;
errorString = "saveerror";
}
if (error) {
redirectUri = "." + AppConfig.PATH_PATIENT_ROOT + "/" + healthRecordId + "/nutritionevents/?status=" + errorString;
}
return Response.seeOther(uriInfo.getBaseUri().resolve(redirectUri)).build();
}
private <T> List<T> remap (MultivaluedMap<String, String> map, Class<T> type, Long healthRecordId) {
HashMap<Long, T> pairsBySuffix = new HashMap<Long, T>();
Pattern numberRx = Pattern.compile("_(\\d+)$");
for (Entry<String, List<String>> entry: map.entrySet()) {
Matcher matcher = numberRx.matcher(entry.getKey());
if (matcher.find()) {
T i;
Long matchedVal = new Long(matcher.group(1));
if (pairsBySuffix.containsKey(matchedVal)) {
i = pairsBySuffix.get(matchedVal);
} else {
try {
Constructor c = type.getConstructor(Long.class);
i = (T) c.newInstance(healthRecordId);
}
catch (Exception ex) {
logger.error("Error constructing new carenotebook entity of type {} for healthrecord {}", type, healthRecordId);
logger.error("Stacktrace: {}" , ex);
i = null;
}
}
Class paramTypes[] = new Class[1];
paramTypes[0] = String.class;
Boolean continueVal = false;
Boolean wasSet = true;
Method m = null;
String trueKey = entry.getKey().substring(0, entry.getKey().length() - (matcher.group().length()));
if (i != null) {
try {
Method m2[] = i.getClass().getDeclaredMethods();
for (Method meth : m2) {
if (meth.getName().equalsIgnoreCase("set".concat(trueKey))
&& meth.getParameterTypes()[0].getName().compareTo(String.class.getName()) == 0
) {
m = meth;
continueVal = true;
break;
}
}
}
catch (SecurityException ex) {
continueVal = false;
logger.error("Security exception in remap function: {} {}", entry.getKey(), entry.getValue());
}
}
if (continueVal) {
String arglist[] = new String[1];
arglist[0] = entry.getValue().get(0); //this might be unsafe?
try {
m.invoke(i, (Object[]) arglist);
}
catch (Exception ex) {
//IllegalAccessException
//IllegalArgumentException
//InvocationTargetException
wasSet = false;
}
}
if (continueVal && wasSet) {
pairsBySuffix.put(matchedVal, i);
} else {
logger.error("Unable to save form value in remap function: {} {}", entry.getKey(), entry.getValue());
}
}
}
//put our map in order
Long[] a = new Long[1];
List<Long> keys = Arrays.asList(pairsBySuffix.keySet().toArray(a));
Collections.sort(keys);
List<T> sortedSet = new ArrayList<T>();
for (Long key : keys) {
sortedSet.add(pairsBySuffix.get(key));
}
return sortedSet;
}
}