package org.openeai.uportal.handlers;
import org.openeai.moa.jmsobjects.JmsEnterpriseObject;
import org.openeai.jms.producer.PointToPointProducer;
import com.any_erp_vendor.moa.jmsobjects.person.v1_0.BasicPerson;
import com.any_erp_vendor.moa.objects.resources.v1_0.LightweightPerson;
import com.any_erp_vendor.moa.objects.resources.v1_0.Name;
import com.any_erp_vendor.moa.objects.resources.v1_0.Address;
import org.jasig.portal.services.LogService;
public class BasicPersonQueryHandler extends UportalFormHandlerBase implements UportalFormHandler {
public BasicPersonQueryHandler() {
}
public String process() throws UportalFormHandlerException {
String messageObjectName = getProperties().getProperty(MESSAGE_OBJECT_NAME_PROP);
String queryObjectName = getProperties().getProperty(QUERY_OBJECT_NAME_PROP);
String producerName = getProperties().getProperty(PRODUCER_NAME_PROP);
LogService.log(LogService.INFO, "[basicPersonQueryHandler] producerName is " + producerName);
String xml = INITIAL_XML;
String firstName = (String)getChannelStaticData().getPerson().getAttribute("givenName");
String lastName = (String)getChannelStaticData().getPerson().getAttribute("sn");
String instId = Integer.toString(getChannelStaticData().getPerson().getID());
LogService.log(LogService.INFO, "[basicPersonQueryHandler] instId is " + instId);
LogService.log(LogService.INFO, "[basicPersonQueryHandler] firstName is " + firstName);
LogService.log(LogService.INFO, "[basicPersonQueryHandler] lastName is " + lastName);
try {
LightweightPerson lPerson =
(LightweightPerson)getAppConfig().getObject(queryObjectName);
lPerson.getEnterpriseFields().setIgnoreValidation(true);
LogService.log(LogService.INFO, "[basicPersonQueryHandler] got LightweightPerson...");
if (instId != null && instId.length() > 0) {
lPerson.setInstitutionalId(instId);
LogService.log(LogService.INFO, "[basicPersonQueryHandler] set instid on lightweight person...");
JmsEnterpriseObject jeo = (JmsEnterpriseObject)getAppConfig().getObject(messageObjectName);
LogService.log(LogService.INFO, "[basicPersonQueryHandler] got " + messageObjectName + " from AppConfig, performing Query...");
// todo - use producer pool
java.util.List returnedJeos =
jeo.query(lPerson,
(PointToPointProducer)getAppConfig().getObject(producerName));
LogService.log(LogService.INFO, "[basicPersonQueryHandler] got " + returnedJeos.size() + " " + messageObjectName + "'s back.");
for (int i=0; i<returnedJeos.size(); i++) {
JmsEnterpriseObject j = (JmsEnterpriseObject)returnedJeos.get(i);
j.getXmlEnterpriseObject().getEnterpriseFields().setIgnoreValidation(true);
xml += j.getXmlEnterpriseObject().toXmlString();
}
if (returnedJeos.size() == 0) {
// create the BasicPerson using default values from uPortal (givenName, sn)
LogService.log(LogService.INFO, "[basicPersonQueryHandler] BasicPerson doesn't exist, creating it.");
BasicPerson bp = (BasicPerson)getAppConfig().getObject(messageObjectName);
bp.setInstitutionalId(instId);
Name name = bp.newName();
name.setFirstName(firstName);
name.setLastName(lastName);
bp.setName(name);
bp.create((PointToPointProducer)getAppConfig().getObject(producerName));
LogService.log(LogService.INFO, "[basicPersonQueryHandler] BasicPerson was created.");
xml += bp.getXmlEnterpriseObject().toXmlString();
}
}
else {
xml += "<LightweightPerson><InstitutionalId></InstitutionalId></LightweightPerson>";
}
}
catch (Exception openeaiExc) {
LogService.log(LogService.ERROR, openeaiExc);
openeaiExc.printStackTrace();
throw new UportalFormHandlerException("Exception rendering XML for display", openeaiExc);
}
return xml;
}
}