Skip to content

Commit

Permalink
refactor mcedt upload download methods
Browse files Browse the repository at this point in the history
  • Loading branch information
Colcamex Resources Inc committed Mar 5, 2022
1 parent eb1cc35 commit 04e226f
Show file tree
Hide file tree
Showing 12 changed files with 58 additions and 90 deletions.
57 changes: 32 additions & 25 deletions src/main/java/org/oscarehr/integration/mcedt/DelegateFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,40 +28,35 @@
import org.oscarehr.common.model.UserProperty;
import org.oscarehr.integration.ebs.client.EdtClientBuilder;
import org.oscarehr.integration.ebs.client.EdtClientBuilderConfig;
import org.oscarehr.integration.mcedt.mailbox.ActionUtils;
import org.oscarehr.util.MiscUtils;
import org.oscarehr.util.SpringUtils;

import oscar.OscarProperties;
import ca.ontario.health.edt.EDTDelegate;

import java.util.HashMap;
import java.util.Map;

public class DelegateFactory {

private static Logger logger = MiscUtils.getLogger();
private static UserPropertyDAO userPropertyDAO = SpringUtils.getBean(UserPropertyDAO.class);
private static Map<String, EDTDelegate> edtDelegates = new HashMap<>();

public static EDTDelegate newDelegate() {
OscarProperties props = OscarProperties.getInstance();
EdtClientBuilderConfig config = new EdtClientBuilderConfig();
config.setLoggingRequired(!Boolean.valueOf(props.getProperty("mcedt.logging.skip")));
config.setKeystoreUser(props.getProperty("mcedt.keystore.user"));
config.setKeystorePassword(props.getProperty("mcedt.keystore.pass"));
config.setUserNameTokenUser(props.getProperty("mcedt.service.user"));
//config.setUserNameTokenPassword(props.getProperty("mcedt.service.pass"));
UserProperty prop = userPropertyDAO.getProp(UserProperty.MCEDT_ACCOUNT_PASSWORD);
config.setUserNameTokenPassword((prop==null||prop.getValue()==null || prop.getValue().trim().equals(""))?props.getProperty("mcedt.service.pass"):prop.getValue());
config.setServiceUrl(props.getProperty("mcedt.service.url"));
config.setConformanceKey(props.getProperty("mcedt.service.conformanceKey"));
config.setServiceId(props.getProperty("mcedt.service.id"));
config.setMtomEnabled(true);
EdtClientBuilder builder = new EdtClientBuilder(config);
EDTDelegate result = builder.build(EDTDelegate.class);
if (logger.isInfoEnabled()) {
logger.info("Created new EDT delegate " + result);
public static EDTDelegate getEDTDelegateInstance(String serviceId) {
if (edtDelegates.get(serviceId) == null) {
edtDelegates.put(serviceId, newDelegate(serviceId));
}
return result;
}
return edtDelegates.get(serviceId);
}

public static EDTDelegate getEDTDelegateInstance() {
OscarProperties props = OscarProperties.getInstance();
return getEDTDelegateInstance(props.getProperty("mcedt.service.id"));
}

public static EDTDelegate newDelegate(String serviceId) {
private static EDTDelegate newDelegate(String serviceId) {
OscarProperties props = OscarProperties.getInstance();
EdtClientBuilderConfig config = new EdtClientBuilderConfig();
config.setLoggingRequired(!Boolean.valueOf(props.getProperty("mcedt.logging.skip")));
Expand All @@ -76,12 +71,24 @@ public static EDTDelegate newDelegate(String serviceId) {
config.setServiceId((serviceId==null ||serviceId.trim().equals(""))?props.getProperty("mcedt.service.id"):serviceId);
config.setMtomEnabled(true);
EdtClientBuilder builder = new EdtClientBuilder(config);
EDTDelegate result = builder.build(EDTDelegate.class);
EDTDelegate edtDelegate = builder.build(EDTDelegate.class);
if (logger.isInfoEnabled()) {
logger.info("Created new EDT delegate " + result);
logger.info("Created new EDT delegate " + edtDelegate);
}
return result;
}
return edtDelegate;
}

/**
* Refreshes created delegates in the event that information has been updated
*/
public static void refreshDelegates() {
// For each service id, create a new updated delegate
for (String serviceId : ActionUtils.getServiceIds()){
edtDelegates.put(serviceId, newDelegate(serviceId));
}
// Suggests for the Garbage Collector to run in an effort to clean up any lingering connections
System.gc();
}

public static UserPropertyDAO getUserPropertyDAO() {
return userPropertyDAO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public class InfoAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
List<BigInteger> resourceIds = getResourceIds(request);

EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
Detail detail = delegate.info(resourceIds);
request.setAttribute("detail", detail);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpSer
HttpServletResponse response) throws Exception {
ResourceForm resourceForm = (ResourceForm) form;

EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
resourceForm.setTypeListResult(getTypeList(request, delegate));
resourceForm.setDetail(getResourceList(request, resourceForm, delegate));

Expand Down Expand Up @@ -114,7 +114,7 @@ public ActionForward delete(ActionMapping mapping, ActionForm form,

ResourceResult result = null;
try {
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
result = delegate.delete(ids);
} catch (Exception e) {
logger.error("Unable to delete", e);
Expand All @@ -138,7 +138,7 @@ public ActionForward submit(ActionMapping mapping, ActionForm form,
List<BigInteger> ids = getResourceIds(request);

try {
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
ResourceResult result = delegate.submit(ids);

reset(mapping, form, request, response);
Expand All @@ -156,7 +156,7 @@ public ActionForward download(ActionMapping mapping, ActionForm form,
List<BigInteger> ids = getResourceIds(request);
DownloadResult downloadResult = null;
try {
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
downloadResult = delegate.download(ids);
} catch (Exception e) {
saveErrors(request, ActionUtils.addMessage("resourceAction.download.fault", McedtMessageCreator.exceptionToString(e)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpSer

Detail details = (Detail) request.getSession().getAttribute(SESSION_KEY_UPLOAD_DETAILS);
if (details == null) {
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
try {
details = delegate.info(resourceIds);
} catch (Exception e) {
Expand Down Expand Up @@ -113,7 +113,7 @@ public ActionForward sendUpdateRequest(ActionMapping mapping, ActionForm form,
}

try {
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
ResourceResult result = delegate.update(updates);
clearUpdateList(request);
saveMessages(request.getSession(), ActionUtils.addMessage("updateAction.sendUpdateRequest.success", McedtMessageCreator.resourceResultToString(result)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public ActionForward uploadToMcedt(ActionMapping mapping, ActionForm form,
List<UploadData> uploads = ActionUtils.getUploadList(request.getSession());

try {
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
ResourceResult result = delegate.upload(uploads);

clearSession(request);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpSer

try{
if(request.getSession().getAttribute("resourceTypeList")==null){
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
resourceForm.setTypeListResult(getTypeList(request, delegate));
request.getSession().setAttribute("resourceTypeList",resourceForm.getTypeListResult());
}
Expand All @@ -83,7 +83,7 @@ public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpSer
Detail result = ActionUtils.getDetails(request);
if (result == null) {
for (String serviceId: ActionUtils.getServiceIds()) {
EDTDelegate delegate = DelegateFactory.newDelegate(serviceId);
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(serviceId);
result= getResourceList(request, resourceForm, delegate, serviceId, result);
}
List<DetailDataCustom> resourceList= resourceForm.getData();
Expand Down Expand Up @@ -214,7 +214,7 @@ public ActionForward download(ActionMapping mapping, ActionForm form,
DownloadResult downloadResult = null;

try {
EDTDelegate delegate = DelegateFactory.newDelegate(serviceId);
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(serviceId);

downloadResult = delegate.download(ids);

Expand Down Expand Up @@ -348,7 +348,7 @@ public ActionForward userDownload(ActionMapping mapping, ActionForm form,
DownloadResult downloadResult = null;
DownloadForm downloadForm= (DownloadForm) form;
try {
EDTDelegate delegate = DelegateFactory.newDelegate(downloadForm.getServiceId()==null? ActionUtils.getDefaultServiceId():downloadForm.getServiceId());
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(downloadForm.getServiceId()==null? ActionUtils.getDefaultServiceId():downloadForm.getServiceId());

downloadResult = delegate.download(ids);

Expand Down Expand Up @@ -396,7 +396,7 @@ private List<DetailDataCustom> getResourceList(HttpServletRequest request, Actio
resourceType = null;
}

EDTDelegate delegate = DelegateFactory.newDelegate(resourceForm.getServiceId());
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(resourceForm.getServiceId());
result = delegate.list(resourceType, ResourceStatus.DOWNLOADABLE, resourceForm.getPageNoAsBigInt());

if(request.getSession().getAttribute("resourceTypeList")==null){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpSer
request.getSession().setAttribute("info", "true");*/
//----------

EDTDelegate delegate = DelegateFactory.newDelegate(serviceId);
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(serviceId);
Detail detail = delegate.info(resourceIds);
request.setAttribute("detail", detail);
request.getSession().setAttribute("info", "true");
Expand All @@ -90,30 +90,6 @@ public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpSer
}
}

/*public ActionForward reSubmit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
List<BigInteger> resourceIds = getResourceIds(request);
try{
ResourceResult result=null;
EDTDelegate delegate = DelegateFactory.newDelegate();
if (resourceIds.size()>0) result =delegate.submit(resourceIds);
for (ResponseResult edtResponse: result.getResponse()) {
if (edtResponse.getResult().getCode().equals("IEDTS0001")) {
saveMessages(request, ActionUtils.addMessage("uploadAction.submit.success", McedtMessageCreator.resourceResultToString(result)));
} else {
saveErrors(request, ActionUtils.addMessage("uploadAction.submit.failure", edtResponse.getDescription()+": "+edtResponse.getResult().getMsg()));
}
}
return mapping.findForward("success");
}catch(Exception e){
logger.error("Unable to submit resource ", e);
saveErrors(request, ActionUtils.addMessage("uploadAction.submit.failure", McedtMessageCreator.exceptionToString(e)));
return mapping.findForward("success");
}
}*/

public ActionForward deleteFiles(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
List<BigInteger> ids = getResourceIds(request);
Expand All @@ -122,7 +98,7 @@ public ActionForward deleteFiles(ActionMapping mapping, ActionForm form,

ResourceResult result = null;
try {
EDTDelegate delegate = DelegateFactory.newDelegate(serviceId);
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(serviceId);
result = delegate.delete(ids);
} catch (Exception e) {
logger.error("Unable to delete", e);
Expand Down Expand Up @@ -162,7 +138,7 @@ private List<DetailDataCustom> getResourceList(HttpServletRequest request, Actio

BigInteger resultSize = null;

EDTDelegate delegate = DelegateFactory.newDelegate(resourceForm.getServiceIdSent());
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(resourceForm.getServiceIdSent());
result = delegate.list(resourceType, resourceForm.getStatusAsResourceStatus(), resourceForm.getPageNoAsBigInt());

if(result!=null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServlet
try{

ResourceResult result=null;
EDTDelegate delegate = DelegateFactory.newDelegate(serviceId);
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(serviceId);
if (resourceIds.size()>0) result =delegate.submit(resourceIds);
for (ResponseResult edtResponse: result.getResponse()) {
if (edtResponse.getResult().getCode().equals("IEDTS0001")) {
Expand Down Expand Up @@ -100,7 +100,7 @@ private List<DetailDataCustom> getResourceList(HttpServletRequest request, Actio
resourceType = null;
}

EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
result = delegate.list(resourceType, resourceForm.getStatusAsResourceStatus(), resourceForm.getPageNoAsBigInt());

BigInteger resultSize = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,32 +118,17 @@ private void resetPage(ActionForm form){
public ActionForward loadSentList(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
ResourceForm resourceForm = (ResourceForm) form;
//resourceForm.setStatus("");
resetPage(form);
List<DetailDataCustom> resourceList;
List<DetailDataCustom> resourceListFiltered = new ArrayList<DetailDataCustom>();

try{
if(request.getSession().getAttribute("resourceTypeList")==null){
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
resourceForm.setTypeListResult(getTypeList(request, delegate));
//request.getSession().setAttribute("resourceTypeList",resourceForm.getTypeListResult());
//List<TypeListData> typeListData = getTypeList(request, delegate).getData();
//request.getSession().setAttribute("typeListData",typeListData);
}
//resourceForm.setResourceType("");
//resourceForm.setPageNo(1);
resourceForm.setStatus("UPLOADED");
resourceList = loadList(form,request,response,ResourceStatus.UPLOADED);
/*if(resourceList.size()>0){
for(DetailDataCustom detailDataK:resourceList){
//if(ActionUtils.filterResourceStatus(detailDataK)){
resourceListFiltered.add(detailDataK);
//}
}
request.getSession().setAttribute("resourceListSent",resourceListFiltered);
}*/
request.getSession().setAttribute("resourceListSent",resourceList);
request.getSession().setAttribute("resourceStatus","UPLOADED");
}
Expand All @@ -159,7 +144,7 @@ public List<DetailDataCustom> loadList( ActionForm form, HttpServletRequest requ
ResourceForm resourceForm = (ResourceForm) form;

try{
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();


if(request.getSession().getAttribute("resourceTypeList")==null){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ public ActionForward uploadToMcedt(ActionMapping mapping, ActionForm form, HttpS
}*/

try {
EDTDelegate delegate = DelegateFactory.newDelegate(ActionUtils.getServiceId(uploadForm.getDescription()));
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(ActionUtils.getServiceId(uploadForm.getDescription()));
ResourceResult result = new ResourceResult();

try {
Expand Down Expand Up @@ -193,7 +193,7 @@ public ActionForward submitToMcedt(ActionMapping mapping, ActionForm form, HttpS
}*/

try {
EDTDelegate delegate = DelegateFactory.newDelegate(ActionUtils.getServiceId(submitForm.getFileName()));
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(ActionUtils.getServiceId(submitForm.getFileName()));
ResourceResult result = new ResourceResult();

try {
Expand Down Expand Up @@ -235,7 +235,7 @@ public ActionForward uploadSubmitToMcedt(ActionMapping mapping, ActionForm form,
for (UploadData upload: uploads) {
List<UploadData> uploadData= new ArrayList<UploadData>();
uploadData.add(upload);
EDTDelegate delegate = DelegateFactory.newDelegate(ActionUtils.getServiceId(upload.getDescription()));
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance(ActionUtils.getServiceId(upload.getDescription()));
ResourceResult result = new ResourceResult();

try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ private void sendUploadData(UploadData uploadData) {
List<UploadData> uploads = new ArrayList<UploadData>();
uploads.add(uploadData);
try {
EDTDelegate delegate = DelegateFactory.newDelegate();
EDTDelegate delegate = DelegateFactory.getEDTDelegateInstance();
delegate.upload(uploads);
} catch (Exception e) {
logger.error("Unable to upload to MCEDT", e);
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/clientKeystore.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=pass
org.apache.ws.security.crypto.merlin.keystore.alias=alias
org.apache.ws.security.crypto.merlin.keystore.password=changeit
org.apache.ws.security.crypto.merlin.keystore.alias=signaturealias
org.apache.ws.security.crypto.merlin.keystore.file=/var/lib/Oscar/mcedt.jks
org.apache.ws.security.crypto.merlin.file=/var/lib/Oscar/mcedt.jks

0 comments on commit 04e226f

Please sign in to comment.