diff --git a/core/src/main/java/com/usvisatrack/core/common/DataObject.java b/core/src/main/java/com/usvisatrack/core/common/DataObject.java index 737e5c3..47dd859 100644 --- a/core/src/main/java/com/usvisatrack/core/common/DataObject.java +++ b/core/src/main/java/com/usvisatrack/core/common/DataObject.java @@ -24,7 +24,7 @@ import com.usvisatrack.core.dao.model.EntityListener; * */ @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE) -@EntityListeners({EntityListener.class}) +@EntityListeners({ EntityListener.class }) @MappedSuperclass public abstract class DataObject { @@ -35,12 +35,14 @@ public abstract class DataObject { public abstract interface Update { } + public static final String ID_PROPERTY_NAME = "id"; public static final String CREATE_DATE_PROPERTY_NAME = "createDate"; public static final String MODIFY_DATE_PROPERTY_NAME = "modifyDate"; private Long id; private Date createDate; private Date modifyDate; + private Date deleteDate; /** * @@ -100,6 +102,17 @@ public abstract class DataObject { this.modifyDate = modifyDate; } + @JsonProperty + @DateBridge(resolution = Resolution.SECOND) + @Column(nullable = false) + public Date getDeleteDate() { + return deleteDate; + } + + public void setDeleteDate(Date deleteDate) { + this.deleteDate = deleteDate; + } + /** * */ diff --git a/core/src/main/java/com/usvisatrack/core/dao/model/Visa.java b/core/src/main/java/com/usvisatrack/core/dao/model/Visa.java index b9ce202..f26881e 100644 --- a/core/src/main/java/com/usvisatrack/core/dao/model/Visa.java +++ b/core/src/main/java/com/usvisatrack/core/dao/model/Visa.java @@ -1,6 +1,9 @@ package com.usvisatrack.core.dao.model; import java.util.Date; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; import com.usvisatrack.core.common.DataObject; import com.usvisatrack.core.dao.model.data.VisaEntry; @@ -25,6 +28,10 @@ public class Visa extends DataObject { private Date dateVisaInterview; private Date dateVisaIssued; private Date dateVisaCheckCompleted; + + private Set visaStatusLogSet = new LinkedHashSet(); + + public Visa() { Date date = new Date(); @@ -120,4 +127,12 @@ public class Visa extends DataObject { this.dateVisaCheckCompleted = dateVisaCheckCompleted; } + public Set getVisaStatusLogSet() { + return visaStatusLogSet; + } + + public void setVisaStatusLogSet(Set visaStatusLogSet) { + this.visaStatusLogSet = visaStatusLogSet; + } + } diff --git a/core/src/main/java/com/usvisatrack/core/dao/model/VisaStatusLog.java b/core/src/main/java/com/usvisatrack/core/dao/model/VisaStatusLog.java new file mode 100644 index 0000000..5e1f065 --- /dev/null +++ b/core/src/main/java/com/usvisatrack/core/dao/model/VisaStatusLog.java @@ -0,0 +1,48 @@ +package com.usvisatrack.core.dao.model; + +import java.util.Date; + +import com.usvisatrack.core.common.DataObject; +import com.usvisatrack.core.dao.model.data.VisaStatus; + +/** + * VisaStatusLog ORM + * + * @author YuCheng Hu + * + */ +public class VisaStatusLog extends DataObject { + + private Visa visa; + private VisaStatus visaStatus; + private Date dateVisaLastUpdatedDate; + + public VisaStatusLog() { + this.setCreateDate(new Date()); + } + + public Visa getVisa() { + return visa; + } + + public void setVisa(Visa visa) { + this.visa = visa; + } + + public VisaStatus getVisaStatus() { + return visaStatus; + } + + public void setVisaStatus(VisaStatus visaStatus) { + this.visaStatus = visaStatus; + } + + public Date getDateVisaLastUpdatedDate() { + return dateVisaLastUpdatedDate; + } + + public void setDateVisaLastUpdatedDate(Date dateVisaLastUpdatedDate) { + this.dateVisaLastUpdatedDate = dateVisaLastUpdatedDate; + } + +} diff --git a/core/src/main/java/com/usvisatrack/core/dao/model/data/VisaStatus.java b/core/src/main/java/com/usvisatrack/core/dao/model/data/VisaStatus.java index 8357094..dd895a3 100644 --- a/core/src/main/java/com/usvisatrack/core/dao/model/data/VisaStatus.java +++ b/core/src/main/java/com/usvisatrack/core/dao/model/data/VisaStatus.java @@ -7,5 +7,5 @@ package com.usvisatrack.core.dao.model.data; * */ public enum VisaStatus { - NOSTATUS, READY, ADMINISTRATIVEPROCESSING, ISSUED + NOSTATUS, READY, ADMINISTRATIVE_PROCESSING, ISSUED, REFUSED } \ No newline at end of file diff --git a/core/src/main/java/com/usvisatrack/core/factories/VisaFactory.java b/core/src/main/java/com/usvisatrack/core/factories/VisaFactory.java index 9a9c5fa..a59af4c 100644 --- a/core/src/main/java/com/usvisatrack/core/factories/VisaFactory.java +++ b/core/src/main/java/com/usvisatrack/core/factories/VisaFactory.java @@ -1,5 +1,6 @@ package com.usvisatrack.core.factories; +import java.util.Date; import java.util.List; import org.hibernate.Criteria; @@ -10,6 +11,7 @@ import com.usvisatrack.core.common.Factory; import com.usvisatrack.core.dao.model.CheckeeVisa; import com.usvisatrack.core.dao.model.Visa; import com.usvisatrack.core.dao.model.VisaClass; +import com.usvisatrack.core.dao.model.VisaStatusLog; /** * Item Data Factory @@ -93,6 +95,20 @@ public class VisaFactory extends Factory { return null; } + public static List getAllVisa() { + try { + Factory.beginTransaction(); + Criteria criteria = Factory.createCriteria(Visa.class); + criteria.setMaxResults(120000); + return criteria.list(); + } catch (Exception ex) { + logger.error("search item by item name error", ex); + } finally { + Factory.rollbackTransaction(); + } + return null; + } + /** * Save VISA * @@ -120,4 +136,34 @@ public class VisaFactory extends Factory { } } + public static void save(VisaStatusLog visaStatusLog) { + try { + Factory.beginTransaction(); + Factory.saveOrUpdate(visaStatusLog); + Factory.commitTransaction(); + + updateVisa(visaStatusLog.getVisa()); + } catch (Exception ex) { + logger.error("Save CheckeeVisa OBJ ERROR", ex); + Factory.rollbackTransaction(); + } + } + + private static void updateVisa(Visa visa) { + try { + if (visa != null && visa.getId() != null) { + visa = VisaFactory.get(visa.getId()); + } + + if (visa != null && visa.getVisaStatusLogSet() != null && visa.getVisaStatusLogSet().size() > 0) { + visa.setVisaStatus(visa.getVisaStatusLogSet().iterator().next().getVisaStatus()); + visa.setModifyDate(new Date()); + VisaFactory.save(visa); + } + + } catch (Exception ex) { + logger.error("Save CheckeeVisa OBJ ERROR", ex); + } + } + } \ No newline at end of file diff --git a/core/src/main/resources/hbm/Visa.hbm.xml b/core/src/main/resources/hbm/Visa.hbm.xml index 561cd68..f9ab695 100644 --- a/core/src/main/resources/hbm/Visa.hbm.xml +++ b/core/src/main/resources/hbm/Visa.hbm.xml @@ -17,6 +17,13 @@ + + + + + + @@ -41,15 +48,15 @@ - + - + - + @@ -60,7 +67,5 @@ - - diff --git a/core/src/main/resources/hbm/VisaStatusLog.hbm.xml b/core/src/main/resources/hbm/VisaStatusLog.hbm.xml new file mode 100644 index 0000000..706114c --- /dev/null +++ b/core/src/main/resources/hbm/VisaStatusLog.hbm.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + com.usvisatrack.core.dao.model.data.VisaStatus + + + + + + + + + + + + + + + + diff --git a/core/src/main/resources/hibernate.cfg.xml b/core/src/main/resources/hibernate.cfg.xml index bb03c4c..59c71ae 100644 --- a/core/src/main/resources/hibernate.cfg.xml +++ b/core/src/main/resources/hibernate.cfg.xml @@ -38,6 +38,7 @@ + diff --git a/core/src/test/java/com/usvisatrack/core/test/VisaTest.java b/core/src/test/java/com/usvisatrack/core/test/VisaTest.java index 005ba0c..4b5bd19 100644 --- a/core/src/test/java/com/usvisatrack/core/test/VisaTest.java +++ b/core/src/test/java/com/usvisatrack/core/test/VisaTest.java @@ -13,6 +13,11 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.usvisatrack.core.dao.model.Visa; +import com.usvisatrack.core.dao.model.VisaStatusLog; +import com.usvisatrack.core.dao.model.data.VisaStatus; +import com.usvisatrack.core.factories.VisaFactory; + /** * * @author YuCheng Hu @@ -23,11 +28,45 @@ public class VisaTest extends TestCase { private final static Logger logger = LoggerFactory.getLogger(VisaTest.class); @Test - public void testItemByGTIN() throws Exception { - // String gtin = "6902253867314"; + public void testGetVISAbyID() throws Exception { + List visaes = VisaFactory.getAllVisa(); + + for (Visa visaDB : visaes) { + Long visaId = visaDB.getId(); + + try { + Visa visa = VisaFactory.get(visaId); + + if (visa != null && visa.getVisaStatusLogSet().isEmpty()) { + + VisaStatusLog visaStatusLog = new VisaStatusLog(); + visaStatusLog.setVisa(visa); + visaStatusLog.setVisaStatus(VisaStatus.ADMINISTRATIVE_PROCESSING); + visaStatusLog.setDateVisaLastUpdatedDate(visa.getDateVisaInterview()); + + VisaFactory.save(visaStatusLog); + + if (visa.getDateVisaIssued() != null) { + visaStatusLog = new VisaStatusLog(); + visaStatusLog.setVisa(visa); + visaStatusLog.setVisaStatus(visa.getVisaStatus()); + visaStatusLog.setDateVisaLastUpdatedDate(visa.getDateVisaIssued()); + + VisaFactory.save(visaStatusLog); + } + + } + logger.debug("Visa ID - [{}]", visa.getId()); + // logger.debug("Visa Log Size - [{}]", visa.getVisaStatusLogSet().iterator().next().getVisaStatus()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + // ItemCode itemCode = ItemFactory.getItemCodeByGTIN(gtin); // - // logger.debug("Item Name {}", itemCode.getItem().getName()); + // logger.debug("attachment Size {}", itemCode.getItem().getItemAttachments().size()); // logger.debug("Price Size {}", itemCode.getItem().getItemPrices().size()); // logger.debug("Accese URL {}", itemCode.getItem().getItemPrices().get(0).getAccessURL()); diff --git a/services/src/main/java/com/usvisatrack/services/VisaImporter.java b/services/src/main/java/com/usvisatrack/services/VisaImporter.java index 05a405f..db7fd34 100644 --- a/services/src/main/java/com/usvisatrack/services/VisaImporter.java +++ b/services/src/main/java/com/usvisatrack/services/VisaImporter.java @@ -26,6 +26,7 @@ import com.usvisatrack.core.dao.model.CheckeeVisa; import com.usvisatrack.core.dao.model.User; import com.usvisatrack.core.dao.model.Visa; import com.usvisatrack.core.dao.model.VisaClass; +import com.usvisatrack.core.dao.model.VisaStatusLog; import com.usvisatrack.core.factories.USFactory; import com.usvisatrack.core.factories.UserFactory; import com.usvisatrack.core.factories.VisaFactory; @@ -198,7 +199,10 @@ public class VisaImporter extends DataCrawl { visa.setVisaStatus(VisaStatus.ISSUED); break; case "PENDING": - visa.setVisaStatus(VisaStatus.ADMINISTRATIVEPROCESSING); + visa.setVisaStatus(VisaStatus.ADMINISTRATIVE_PROCESSING); + break; + case "REJECT": + visa.setVisaStatus(VisaStatus.REFUSED); break; } @@ -218,6 +222,7 @@ public class VisaImporter extends DataCrawl { visa.setModifyDate(new Date()); visa.setUser(getUser(checkeeCaseNumber)); VisaFactory.save(visa); + updateVisaLog(visa.getId()); if (isNewVisa) { CheckeeVisa checkeeVisa = new CheckeeVisa(); @@ -225,6 +230,7 @@ public class VisaImporter extends DataCrawl { checkeeVisa.setVisaID(visa.getId()); VisaFactory.save(checkeeVisa); } + } // if (i == 2) @@ -327,4 +333,45 @@ public class VisaImporter extends DataCrawl { logger.debug("Case Description - [{}]", visa.getDescription()); } + private void updateVisaLog(Long visaId) { + logger.debug("Update Visa ID - [{}]", visaId); + try { + Visa visa = VisaFactory.get(visaId); + + // IF VISA LOG NOT IN SYSTEM + if (visa != null && visa.getVisaStatusLogSet().isEmpty()) { + + VisaStatusLog visaStatusLog = new VisaStatusLog(); + visaStatusLog.setVisa(visa); + visaStatusLog.setVisaStatus(VisaStatus.ADMINISTRATIVE_PROCESSING); + visaStatusLog.setDateVisaLastUpdatedDate(visa.getDateVisaInterview()); + + VisaFactory.save(visaStatusLog); + + if (visa.getDateVisaIssued() != null) { + visaStatusLog = new VisaStatusLog(); + visaStatusLog.setVisa(visa); + visaStatusLog.setVisaStatus(visa.getVisaStatus()); + visaStatusLog.setDateVisaLastUpdatedDate(visa.getDateVisaIssued()); + + VisaFactory.save(visaStatusLog); + } + + } else { + if (visa.getVisaStatus() != visa.getVisaStatusLogSet().iterator().next().getVisaStatus()) { + VisaStatusLog visaStatusLog = new VisaStatusLog(); + visaStatusLog.setVisa(visa); + visaStatusLog.setVisaStatus(visa.getVisaStatus()); + visaStatusLog.setDateVisaLastUpdatedDate(visa.getDateVisaIssued()); + + VisaFactory.save(visaStatusLog); + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + + } + }