添加签证分类对象,并且对当前的引用进行调整

This commit is contained in:
Yucheng Hu 2017-07-23 22:29:30 -04:00
parent 98a493cf8c
commit 3c200e9a28
9 changed files with 152 additions and 28 deletions

View File

@ -288,4 +288,5 @@
</build>
</profile>
</profiles>
<version>0.1.0</version>
</project>

View File

@ -26,7 +26,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})
@MappedSuperclass
public abstract class DataObject implements Serializable {
public abstract class DataObject {
public abstract interface Save {
@ -35,8 +35,6 @@ public abstract class DataObject implements Serializable {
public abstract interface Update {
}
private static final long serialVersionUID = -67188388306700736L;
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";

View File

@ -12,9 +12,10 @@ import com.usvisatrack.core.common.DataObject;
*/
public class Visa extends DataObject {
private String ds160Code = null;
private String major = null;
private String description = null;
private String ds160Code;
private VisaClass visaClass;
private String major;
private String description;
private Date dateVisaInterview;
private Date dateVisaIssued;
private Date dateVisaCheckCompleted;
@ -22,7 +23,7 @@ public class Visa extends DataObject {
public Visa() {
Date date = new Date();
super.setCreateDate(date);
super.setCreateDate(date);
super.setModifyDate(date);
}
public String getDs160Code() {
@ -33,6 +34,14 @@ public class Visa extends DataObject {
this.ds160Code = ds160Code;
}
public VisaClass getVisaClass() {
return visaClass;
}
public void setVisaClass(VisaClass visaClass) {
this.visaClass = visaClass;
}
public String getMajor() {
return major;
}

View File

@ -0,0 +1,36 @@
package com.usvisatrack.core.dao.model;
import com.usvisatrack.core.common.DataObject;
/**
* VisaClass ORM
*
* @author YuCheng Hu
*
*/
public class VisaClass extends DataObject {
private String visaClassName;
private String visaClassEligibility;
public VisaClass() {
}
public String getVisaClassName() {
return visaClassName;
}
public void setVisaClassName(String visaClassName) {
this.visaClassName = visaClassName;
}
public String getVisaClassEligibility() {
return visaClassEligibility;
}
public void setVisaClassEligibility(String visaClassEligibility) {
this.visaClassEligibility = visaClassEligibility;
}
}

View File

@ -1,10 +1,14 @@
package com.usvisatrack.core.factories;
import java.util.List;
import org.hibernate.Criteria;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.usvisatrack.core.common.Factory;
import com.usvisatrack.core.dao.model.Visa;
import com.usvisatrack.core.dao.model.VisaClass;
/**
* Item Data Factory
@ -41,6 +45,25 @@ public class VisaFactory extends Factory {
return item;
}
/**
*
* @return
*/
@SuppressWarnings("unchecked")
public static List<VisaClass> getAllVisaClass() {
try {
Factory.beginTransaction();
Criteria criteria = Factory.createCriteria(VisaClass.class);
criteria.setMaxResults(1200);
return criteria.list();
} catch (Exception ex) {
logger.error("search item by item name error", ex);
} finally {
Factory.rollbackTransaction();
}
return null;
}
/**
* Save VISA
*

View File

@ -5,32 +5,36 @@
<hibernate-mapping package="com.usvisatrack.core.dao.model">
<class name="Visa" table="visa" catalog="ntc_usvisatrack">
<id name="id" type="java.lang.Long">
<column name="item_id" />
<column name="visa_id" />
<generator class="identity" />
</id>
<property name="gtin" type="string">
<column name="gtin" length="16" />
<property name="ds160Code" type="string">
<column name="ds160_code" length="16" />
</property>
<property name="itemCode" type="string">
<column name="item_code" />
<many-to-one class="com.usvisatrack.core.dao.model.VisaClass" name="visaClass" column="visa_class_fk" fetch="join" />
<property name="major" type="string">
<column name="major" />
</property>
<property name="itemName" type="string">
<column name="item_name" />
</property>
<property name="price" type="string">
<column name="price" precision="20" scale="6" />
</property>
<property name="itemDescription" type="string">
<property name="description" type="string">
<column name="description" />
</property>
<property name="dateVisaInterview" type="timestamp">
<column name="date_visa_interview" />
</property>
<property name="dateVisaIssued" type="timestamp">
<column name="date_visa_issued" />
</property>
<property name="dateVisaCheckCompleted" type="timestamp">
<column name="date_visa_check_completed" />
</property>
<property name="createDate" type="timestamp">
<column name="date_add" length="19" />
</property>

View File

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.usvisatrack.core.dao.model">
<class name="VisaClass" table="visa_class" catalog="ntc_usvisatrack">
<id name="id" type="java.lang.Long">
<column name="visa_class_id" />
<generator class="identity" />
</id>
<property name="visaClassName" type="string">
<column name="visa_class_name" length="12" />
</property>
<property name="visaClassEligibility" type="string">
<column name="visa_class_eligibility" length="512" />
</property>
</class>
</hibernate-mapping>

View File

@ -30,6 +30,7 @@
<!-- HBMs -->
<mapping resource="hbm/User.hbm.xml" />
<mapping resource="hbm/Visa.hbm.xml" />
<mapping resource="hbm/VisaClass.hbm.xml" />
</session-factory>
</hibernate-configuration>

View File

@ -2,6 +2,7 @@ package com.usvisatrack.services;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.cli.CommandLine;
@ -16,6 +17,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.usvisatrack.core.dao.model.Visa;
import com.usvisatrack.core.dao.model.VisaClass;
import com.usvisatrack.core.factories.VisaFactory;
import com.usvisatrack.services.common.DataCrawl;
@ -26,14 +28,13 @@ import com.usvisatrack.services.common.DataCrawl;
*
*/
public class VisaImporter extends DataCrawl {
private static final Logger logger = LoggerFactory.getLogger(VisaImporter.class);
public final static String ITEM_FTP_FOLDER = "/home/ftp/com-bcodepot/item";
public final static String ITEM_PROCESSED_FOLDER = "/home/data/origin/com-bcodepot-www/processed/item";
public final static String APIDATA_CDN_FOLDER = "/home/cdn/com-bcodepot-www/data/apidata";
private final static String URL_UPCITEMDB = "http://www.upcitemdb.com/upc/";
public static HashMap<String, VisaClass> visaClassMap = new HashMap<String, VisaClass>();
/**
* Command process function
@ -64,15 +65,15 @@ public class VisaImporter extends DataCrawl {
*/
@Override
public void run() {
crawlWebItem();
initData(); // Init data from database
crawlWebVisa();
}
/**
* crawlWebItem by parse web page
*/
private void crawlWebItem() {
private void crawlWebVisa() {
logger.error("Crawl Web Data to load item info.");
List<Visa> visaList = new ArrayList<Visa>();
@ -90,6 +91,23 @@ public class VisaImporter extends DataCrawl {
if (!StringUtils.equalsIgnoreCase("ID", tds.get(1).text())) {
Visa visa = new Visa();
// SET VISA CLASS
String visaClassName = StringUtils.trimToEmpty(tds.get(2).text());
if (StringUtils.isNotBlank(visaClassName)) {
switch (visaClassName) {
case "H1":
visaClassName = "H1-B";
break;
case "H4":
visaClassName = "H-4";
break;
}
visa.setVisaClass(visaClassMap.get(visaClassName));
}
// SET VISA MAJOR
visa.setMajor(StringUtils.trimToEmpty(tds.get(5).text()));
logger.debug("[{}]", visa.getMajor());
@ -108,4 +126,18 @@ public class VisaImporter extends DataCrawl {
}
/**
*
*/
private void initData() {
logger.error("Init Data from Database");
List<VisaClass> visaClassList = VisaFactory.getAllVisaClass();
for (VisaClass visaClass : visaClassList) {
visaClassMap.put(visaClass.getVisaClassName(), visaClass);
}
logger.debug("XXX [{}]", visaClassMap.get("H1-B").getVisaClassEligibility());
}
}