Red Hat Application Migration Toolkit
package com.mpdmal.cloudental.util; import ch.qos.logback.classic.Logger; import com.mpdmal.cloudental.entities.Patient; import com.mpdmal.cloudental.util.exception.InvalidAddressTypeException; import com.mpdmal.cloudental.util.exception.InvalidContactInfoTypeException; import com.mpdmal.cloudental.util.exception.InvalidMedEntryAlertException; import com.mpdmal.cloudental.util.exception.InvalidMedIntakeRouteException; import com.mpdmal.cloudental.util.exception.InvalidPostitAlertException; import com.mpdmal.cloudental.util.exception.InvalidTitleFormatTypeException; import com.mpdmal.cloudental.util.exception.ValidationException; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.Set; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.Message.RecipientType; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.persistence.Query; import javax.validation.ConstraintViolationException; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.util.FileResolver; import org.hibernate.validator.engine.ConstraintViolationImpl; import org.slf4j.LoggerFactory; public class CloudentUtils { public static final int DEFAULT_USER_ID = -1; public static final int DEFAULT_DISCOUNT_ID = -1; public static final int DEFAULT_PRICEABLE_ID = -1; public static final int REPORTTYPE_PATIENTS = 1; public static final int REPORTTYPE_PHARMACY = 2; private static final String DBSTRING = "jdbc:postgresql://localhost:5432/CloudentDB"; private static final String DBUSER = "aza"; private static final String DBPWD = "aza"; private static final String RESOURCES_RELATIVEDIR = "cloudental/jasper/images/"; private static final String PATIENTS_REPORT_JASPER = "cloudental/jasper/patient_report.jasper"; private static final String PATIENTS_REPORT_PDF = "cloudental/reporting/patient_report_$.pdf"; private static final String PRESCRIPTIONS_REPORT_JASPER = "cloudental/jasper/prescriptions_report.jasper"; private static final String PRESCRIPTIONS_REPORT_PDF = "cloudental/reporting/prescriptions_report_$.pdf"; public static final String CLOUDENT_ACCOUNT = "cloudental@gmail.com"; public static final String CLOUDENT_PWD = "cloudental123!"; private static final Logger logger = (Logger)LoggerFactory.getLogger(CloudentUtils.class); private static final Logger servicelogger = (Logger)LoggerFactory.getLogger("com.mpdmal"); private static final int LOG_TYPE_MSG = 1; private static final int LOG_TYPE_WARNING = 2; private static final int LOG_TYPE_ERROR = 3; private static final int LOG_TYPE_SVCLOG = 4; public static boolean isPostitAlertValid(int type) throws InvalidPostitAlertException { CloudentUtils.PostitAlertType[] var1 = CloudentUtils.PostitAlertType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.PostitAlertType tp = var1[var3]; if(type == tp.getValue()) { return true; } } return false; } public static String findPostitAlertDescr(int type) { CloudentUtils.PostitAlertType[] var1 = CloudentUtils.PostitAlertType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.PostitAlertType tp = var1[var3]; if(tp.getValue() == type) { return tp.getDescription(); } } return ""; } public static boolean isMedEntryAlertValid(int type) throws InvalidMedEntryAlertException { CloudentUtils.MedEntryAlertType[] var1 = CloudentUtils.MedEntryAlertType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.MedEntryAlertType tp = var1[var3]; if(type == tp.getValue()) { return true; } } return false; } public static String findMedEntryAlertDescr(int type) { CloudentUtils.MedEntryAlertType[] var1 = CloudentUtils.MedEntryAlertType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.MedEntryAlertType tp = var1[var3]; if(tp.getValue() == type) { return tp.getDescription(); } } return ""; } public static boolean isContactInfoTypeValid(int type) throws InvalidContactInfoTypeException { CloudentUtils.ContactInfoType[] var1 = CloudentUtils.ContactInfoType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.ContactInfoType tp = var1[var3]; if(type == tp.getValue()) { return true; } } return false; } public static String findContactInfoTypeDescr(int type) { CloudentUtils.ContactInfoType[] var1 = CloudentUtils.ContactInfoType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.ContactInfoType tp = var1[var3]; if(tp.getValue() == type) { return tp.getDescription(); } } return ""; } public static boolean isAddressTypeValid(int type) throws InvalidAddressTypeException { CloudentUtils.AddressType[] var1 = CloudentUtils.AddressType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.AddressType tp = var1[var3]; if(type == tp.getValue()) { return true; } } return false; } public static String findAddressTypeDescr(int type) { CloudentUtils.AddressType[] var1 = CloudentUtils.AddressType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.AddressType tp = var1[var3]; if(tp.getValue() == type) { return tp.getDescription(); } } return ""; } public static boolean isPrescrRowTimeunitValid(int type) { CloudentUtils.PrescrRowTimeunit[] var1 = CloudentUtils.PrescrRowTimeunit.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.PrescrRowTimeunit tp = var1[var3]; if(type == tp.getValue()) { return true; } } return false; } public static String findPrescrRowTimeunitDurDescr(int type) { CloudentUtils.PrescrRowTimeunit[] var1 = CloudentUtils.PrescrRowTimeunit.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.PrescrRowTimeunit tp = var1[var3]; if(tp.getValue() == type) { return tp.getDurUnitDescription(); } } return ""; } public static String findPrescrRowTimeunitFreqDescr(int type) { CloudentUtils.PrescrRowTimeunit[] var1 = CloudentUtils.PrescrRowTimeunit.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.PrescrRowTimeunit tp = var1[var3]; if(tp.getValue() == type) { return tp.getFreqUnitDescription(); } } return ""; } public static boolean isTitleFormatTypeValid(int type) throws InvalidTitleFormatTypeException { CloudentUtils.EventTitleFormatType[] var1 = CloudentUtils.EventTitleFormatType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.EventTitleFormatType tp = var1[var3]; if(type == tp.getValue()) { return true; } } return false; } public static String findTitleFormatTypeDescr(int type) { CloudentUtils.EventTitleFormatType[] var1 = CloudentUtils.EventTitleFormatType.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.EventTitleFormatType tp = var1[var3]; if(tp.getValue() == type) { return tp.getDescription(); } } return ""; } public static String createEventTitle(int type, Patient p) throws InvalidTitleFormatTypeException { if(!isTitleFormatTypeValid(type)) { throw new InvalidTitleFormatTypeException(type); } else { return type == CloudentUtils.EventTitleFormatType.FULL.getValue()?p.getSurname() + " " + p.getName():(type == CloudentUtils.EventTitleFormatType.NAME.getValue()?p.getName():(type == CloudentUtils.EventTitleFormatType.SHORT.getValue()?p.getSurname() + " " + p.getName().substring(0, 1):p.getSurname())); } } public static boolean isMedIntakeRouteValid(int type) throws InvalidMedIntakeRouteException { CloudentUtils.MedIntakeRoute[] var1 = CloudentUtils.MedIntakeRoute.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.MedIntakeRoute rt = var1[var3]; if(type == rt.getValue()) { return true; } } return false; } public static String findMedIntakeRouteDescr(int type) { CloudentUtils.MedIntakeRoute[] var1 = CloudentUtils.MedIntakeRoute.values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { CloudentUtils.MedIntakeRoute rt = var1[var3]; if(rt.getValue() == type) { return rt.getDescription(); } } return ""; } public static void logQueryString(Query q) { System.out.println(q.toString()); } public static void logServicecall(String entry) { log(entry, 4); } public static void logMessage(String entry) { log(entry, 1); } public static void logError(String entry) { log(entry, 3); } public static void logWarning(String entry) { log(entry, 2); } public static void log(String entry, int type) { switch(type) { case 1: logger.info(entry); break; case 2: logger.warn(entry); break; case 3: logger.error(entry); break; case 4: servicelogger.debug(entry); } } public static ValidationException createValidationException(ConstraintViolationException e) { String msg = ""; ConstraintViolationImpl impl; for(Iterator it = e.getConstraintViolations().iterator(); it.hasNext(); msg = msg.concat(" " + impl.getMessage() + "\n")) { impl = (ConstraintViolationImpl)it.next(); String name = impl.getRootBean().getClass().toString(); name = name.substring(name.lastIndexOf(".") + 1, name.length()); msg = msg.concat("Property->" + impl.getPropertyPath().toString().toUpperCase()); msg = msg.concat(" on Entity->" + name.toUpperCase()); } logError(msg); return new ValidationException(msg, e); } public static void logMethodInfo(Method m, Object[] prms) { StringBuilder sb = new StringBuilder("bean service fired:" + m.getName()); if(prms == null) { sb.append(" [no args]"); logServicecall(sb.toString()); } else { sb.append(" [ "); Object[] var3 = prms; int var4 = prms.length; for(int var5 = 0; var5 < var4; ++var5) { Object o = var3[var5]; if(o != null) { sb.append(o.toString()).append(", "); } } sb.delete(sb.length() - 2, sb.length()); sb.append("]"); logServicecall(sb.toString()); } } public static void logContextData(Map data) { Set keys = data.keySet(); StringBuilder sb = new StringBuilder(); sb.append("Context Data ------>"); Iterator var3 = keys.iterator(); while(var3.hasNext()) { String key = (String)var3.next(); Object val = data.get(key); sb.append(key).append(":").append(val.toString()).append(""); } sb.append("<------ End Context Data "); logServicecall(sb.toString()); } public static String printPatientReport(int dentistid) throws FileNotFoundException, JRException { String outfile = ""; HashMap parameters = getDefaultReportParameters(); parameters.put("DENTISTID", new Integer(dentistid)); String infile = "cloudental/jasper/patient_report.jasper"; outfile = "cloudental/reporting/patient_report_$.pdf"; JasperPrint jprint = JasperFillManager.fillReport(new FileInputStream(infile), parameters, getSystemConnection()); outfile = outfile.replace("$", "" + dentistid); JasperExportManager.exportReportToPdfFile(jprint, outfile); logMessage("Created PATIENTS REPORT: " + outfile); return outfile; } public static String printPrescriptionReport(int prescid, String headertext, String patientname) throws FileNotFoundException, JRException { String outfile = ""; HashMap parameters = getDefaultReportParameters(); parameters.put("PRESCRIPTIONID", new Integer(prescid)); parameters.put("HEADERTEXT", headertext); parameters.put("PATIENTNAME", patientname); String infile = "cloudental/jasper/prescriptions_report.jasper"; outfile = "cloudental/reporting/prescriptions_report_$.pdf"; JasperPrint jprint = JasperFillManager.fillReport(new FileInputStream(infile), parameters, getSystemConnection()); outfile = outfile.replace("$", "" + prescid); JasperExportManager.exportReportToPdfFile(jprint, outfile); logMessage("Created PRESCRIPTION REPORT: " + outfile); return outfile; } private static Connection getSystemConnection() { try { Class.forName("org.postgresql.Driver"); return DriverManager.getConnection("jdbc:postgresql://localhost:5432/CloudentDB", "aza", "aza"); } catch (ClassNotFoundException var1) { var1.printStackTrace(); } catch (SQLException var2) { var2.printStackTrace(); } return null; } public static void mailReport(String pdf, String email) throws MessagingException { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); Session session = Session.getInstance(props); if(!verifyEmail(email)) { logError("\tinvalid email :" + email); throw new MessagingException("invalid email :" + email); } else { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("cloudental@gmail.com")); message.setRecipients(RecipientType.TO, InternetAddress.parse(email)); message.setSubject("Cloudental - on demand reporting"); MimeBodyPart messageBodyPart = new MimeBodyPart(); FileDataSource ds = new FileDataSource(pdf); messageBodyPart.setDataHandler(new DataHandler(ds)); messageBodyPart.setFileName(ds.getName()); MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(messageBodyPart); message.setContent(mp); message.setSentDate(new Date()); Transport transport = session.getTransport("smtp"); transport.connect("smtp.gmail.com", 587, "cloudental@gmail.com", "cloudental123!"); transport.sendMessage(message, message.getAllRecipients()); logMessage("\temailed :" + email + " a patient report"); } } private static boolean verifyEmail(String email) { if(email.length() <= 0) { return false; } else { int atidx = email.indexOf("@"); int dotidx = email.indexOf("."); return atidx >= 1 && dotidx >= 3; } } private static HashMap getDefaultReportParameters() { FileResolver fileResolver = new FileResolver() { public File resolveFile(String fileName) { return new File("cloudental/jasper/images/" + fileName); } }; HashMap parameters = new HashMap(); parameters.put("REPORT_FILE_RESOLVER", fileResolver); return parameters; } public static void contactCloudental(String title, String msg) throws AddressException, MessagingException { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); Session session = Session.getInstance(props); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("cloudental@gmail.com")); message.setRecipients(RecipientType.TO, InternetAddress.parse("arilou_npl@hotmail.com")); message.setSubject("CD contact:" + title); message.setContent(msg, "text/plain"); message.setSentDate(new Date()); Transport transport = session.getTransport("smtp"); transport.connect("smtp.gmail.com", 587, "cloudental@gmail.com", "cloudental123!"); transport.sendMessage(message, message.getAllRecipients()); logMessage("\temailed Cloudental! (patco, dimaz)"); } public static enum MedIntakeRoute { ORAL(0, "Oral"), SUBLINGUAL(1, "Sublingual"), RECTAL(2, "Rectal"), TRANSDERMAL(3, "Transdermal"), TRANSMUCOSAL(4, "Transmucosal"); private final String desc; private final int value; private MedIntakeRoute(int type, String desc) { this.value = type; this.desc = desc; } public int getValue() { return this.value; } public String getDescription() { return this.desc; } } public static enum EventTitleFormatType { FULL(1, "Name and Surname"), NAME(2, "Name only"), SURNAME(3, "Surname only"), SHORT(4, "Surname and initial"); private final String desc; private final int value; private EventTitleFormatType(int type, String desc) { this.value = type; this.desc = desc; } public int getValue() { return this.value; } public String getDescription() { return this.desc; } } public static enum PrescrRowTimeunit { HOURS(11, "hour(s)", "hour(s)"), DAYS(5, "day(s)", "day(s)"), WEEK(4, "week(s)", "week(s)"), MONTH(2, "month(s)", "month(s)"); private final String ddesc; private final String fdesc; private final int value; private PrescrRowTimeunit(int type, String fdesc, String ddesc) { this.value = type; this.fdesc = fdesc; this.ddesc = ddesc; } public int getValue() { return this.value; } public String getFreqUnitDescription() { return this.fdesc; } public String getDurUnitDescription() { return this.ddesc; } } public static enum AddressType { HOME(0, "Home Address"), OFFICE(1, "Office Address"), BILLING(2, "Billing Address"); private final String desc; private final int value; private AddressType(int type, String desc) { this.value = type; this.desc = desc; } public int getValue() { return this.value; } public String getDescription() { return this.desc; } } public static enum ContactInfoType { EMAIL(0, "E-mail"), FAX(1, "Fax"), HOME(2, "Home Number "), OFFICE(3, "Office Number "), MOBILE(4, "Mobile Phone "); private final String desc; private final int value; private ContactInfoType(int type, String desc) { this.value = type; this.desc = desc; } public int getValue() { return this.value; } public String getDescription() { return this.desc; } } public static enum MedEntryAlertType { NOALERT(0, "Normal"), LOW(1, "Low"), MEDIUM(2, "Medium"), HIGH(3, "High"); private final String desc; private final int value; private MedEntryAlertType(int type, String desc) { this.value = type; this.desc = desc; } public int getValue() { return this.value; } public String getDescription() { return this.desc; } } public static enum PostitAlertType { NOTE(1, "Note"), TODO(2, "To do"), ALARM(3, "Alarm"); private final String desc; private final int value; private PostitAlertType(int type, String desc) { this.value = type; this.desc = desc; } public int getValue() { return this.value; } public String getDescription() { return this.desc; } } }