236 lines
8.8 KiB
Java
236 lines
8.8 KiB
Java
package server.db.importer;
|
|
|
|
import org.apache.commons.io.FileUtils;
|
|
import org.w3c.dom.Document;
|
|
import org.w3c.dom.Element;
|
|
import org.w3c.dom.NodeList;
|
|
import server.db.*;
|
|
import server.db.common.Database;
|
|
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
import java.io.File;
|
|
|
|
public class Importer {
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
Database.init(Database.PRODUCTION_MODE);
|
|
Database.erase();
|
|
new Importer().run(args[0]);
|
|
}
|
|
|
|
public void run(String xmlParam) throws Exception {
|
|
// Copy Files
|
|
String pathToXML = xmlParam;
|
|
|
|
File file = new File(pathToXML);
|
|
|
|
String basePath = file.getParentFile().getAbsolutePath();
|
|
|
|
String pathToImages = basePath + "/images/";
|
|
String pathToKnownData = basePath + "/knowndata/";
|
|
String pathToFieldHelp = basePath + "/fieldhelp/";
|
|
|
|
File destinationPath = new File("db/statics/");
|
|
// Copy images to statics/images
|
|
FileUtils.copyDirectoryToDirectory(new File(pathToImages), destinationPath);
|
|
// Copy known_data to statics/knownData
|
|
FileUtils.copyDirectoryToDirectory(new File(pathToKnownData), destinationPath);
|
|
// Copy field_help tp statics/fieldHelp
|
|
FileUtils.copyDirectoryToDirectory(new File(pathToFieldHelp), destinationPath);
|
|
|
|
|
|
// Import XML
|
|
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
|
|
|
File xmlFile = new File(pathToXML);
|
|
Document document = builder.parse(xmlFile);
|
|
|
|
NodeList usersList = document.getElementsByTagName("user");
|
|
for(int i = 0; i < usersList.getLength(); i++) {
|
|
// Get the the element
|
|
Element userElement = (Element)usersList.item(i);
|
|
|
|
parseUserBlock(userElement);
|
|
}
|
|
|
|
NodeList projectsList = document.getElementsByTagName("project");
|
|
for(int i = 0; i < projectsList.getLength(); i++) {
|
|
// Get the the element
|
|
Element projectElement = (Element)projectsList.item(i);
|
|
|
|
parseProjectBlock(projectElement);
|
|
|
|
NodeList fieldsList = projectElement.getElementsByTagName("field");
|
|
for(int j = 0; j < fieldsList.getLength(); j++) {
|
|
Element fieldElement = (Element)fieldsList.item(j);
|
|
|
|
parseFieldBlock(fieldElement, (j+1));
|
|
}
|
|
|
|
NodeList imagesList = projectElement.getElementsByTagName("image");
|
|
for(int j = 0; j < imagesList.getLength(); j++) {
|
|
Element imageElement = (Element)imagesList.item(j);
|
|
|
|
parseImageBlock(imageElement);
|
|
|
|
iteratingThroughRecords(imageElement);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void iteratingThroughRecords(Element imageElement) throws Exception {
|
|
NodeList recordList = imageElement.getElementsByTagName("record");
|
|
for(int k = 0; k < recordList.getLength(); k++) {
|
|
Element recordElement = (Element)recordList.item(k);
|
|
|
|
parseRecordBlock(recordElement, (k + 1));
|
|
|
|
NodeList valueList = recordElement.getElementsByTagName("value");
|
|
for(int l = 0; l < valueList.getLength(); l++) {
|
|
Element valueElement = (Element)valueList.item(l);
|
|
|
|
parseValueBlock(valueElement, (l+1));
|
|
}
|
|
}
|
|
}
|
|
|
|
public UserAccessor parseUserBlock(Element userElement) throws Exception {
|
|
System.out.print("Parsing User Block ------- ");
|
|
|
|
UserAccessor userAccessor = new UserAccessor();
|
|
|
|
String username = userElement.getElementsByTagName("username").item(0).getTextContent();
|
|
String password = userElement.getElementsByTagName("password").item(0).getTextContent();
|
|
String firstname = userElement.getElementsByTagName("firstname").item(0).getTextContent();
|
|
String lastname = userElement.getElementsByTagName("lastname").item(0).getTextContent();
|
|
String email = userElement.getElementsByTagName("email").item(0).getTextContent();
|
|
String indexedrecords = userElement.getElementsByTagName("indexedrecords")
|
|
.item(0).getTextContent();
|
|
|
|
userAccessor.setUsername(username);
|
|
userAccessor.setPassword(password);
|
|
userAccessor.setFirstName(firstname);
|
|
userAccessor.setLastName(lastname);
|
|
userAccessor.setEmail(email);
|
|
userAccessor.setIndexedRecords(Integer.parseInt(indexedrecords));
|
|
|
|
if(userAccessor.save()) System.out.println("Success!");
|
|
else {
|
|
System.out.println("ERROR!");
|
|
throw new Exception("Error saving the user: " + userAccessor.getUsername());
|
|
}
|
|
|
|
return userAccessor;
|
|
}
|
|
|
|
public ProjectAccessor parseProjectBlock(Element projectElement) throws Exception {
|
|
System.out.print("Parsing Project Block ------- ");
|
|
|
|
ProjectAccessor projectAccessor = new ProjectAccessor();
|
|
|
|
String title = projectElement.getElementsByTagName("title").item(0).getTextContent();
|
|
String recordsperimage = projectElement.getElementsByTagName("recordsperimage")
|
|
.item(0).getTextContent();
|
|
String firstycoord = projectElement.getElementsByTagName("firstycoord")
|
|
.item(0).getTextContent();
|
|
String recordheight = projectElement.getElementsByTagName("recordheight")
|
|
.item(0).getTextContent();
|
|
|
|
projectAccessor.setTitle(title);
|
|
projectAccessor.setRecordsPerImage(Integer.parseInt(recordsperimage));
|
|
projectAccessor.setRecordHeight(Integer.parseInt(recordheight));
|
|
projectAccessor.setFirstYCoord(Integer.parseInt(firstycoord));
|
|
|
|
if(projectAccessor.save()) System.out.println("Success!");
|
|
else {
|
|
System.out.println("ERROR!");
|
|
throw new Exception("Error saving the: " + projectAccessor.getTitle());
|
|
}
|
|
|
|
return projectAccessor;
|
|
}
|
|
|
|
public FieldAccessor parseFieldBlock(Element fieldElement, int number) throws Exception {
|
|
System.out.print(" Parsing Field Block ------- ");
|
|
|
|
FieldAccessor fieldAccessor = new FieldAccessor();
|
|
|
|
String title = fieldElement.getElementsByTagName("title").item(0).getTextContent();
|
|
String xcoord = fieldElement.getElementsByTagName("xcoord").item(0).getTextContent();
|
|
String width = fieldElement.getElementsByTagName("width").item(0).getTextContent();
|
|
String helphtml = fieldElement.getElementsByTagName("helphtml").item(0).getTextContent();
|
|
|
|
String knowndata = null;
|
|
if(fieldElement.getElementsByTagName("knowndata").item(0) != null)
|
|
knowndata = fieldElement.getElementsByTagName("knowndata").item(0).getTextContent();
|
|
|
|
fieldAccessor.setTitle(title);
|
|
fieldAccessor.setxCoord(Integer.parseInt(xcoord));
|
|
fieldAccessor.setWidth(Integer.parseInt(width));
|
|
fieldAccessor.setHelpHtml(helphtml);
|
|
fieldAccessor.setKnownData(knowndata);
|
|
fieldAccessor.setPosition(number);
|
|
|
|
if(fieldAccessor.save()) System.out.println("Success!");
|
|
else {
|
|
System.out.println("ERROR!");
|
|
throw new Exception("Error saving the: " + fieldAccessor.getTitle());
|
|
}
|
|
|
|
return fieldAccessor;
|
|
}
|
|
|
|
public ImageAccessor parseImageBlock(Element imageElement) throws Exception {
|
|
System.out.print(" Parsing Image Block ------- ");
|
|
|
|
ImageAccessor imageAccessor = new ImageAccessor();
|
|
|
|
String file = imageElement.getElementsByTagName("file").item(0).getTextContent();
|
|
|
|
imageAccessor.setFile(file);
|
|
|
|
if(imageAccessor.save()) System.out.println("Success!");
|
|
else {
|
|
System.out.println("ERROR!");
|
|
throw new Exception("Error saving the: " + imageAccessor.getFile());
|
|
}
|
|
|
|
return imageAccessor;
|
|
}
|
|
|
|
public RecordAccessor parseRecordBlock(Element recordElement, int number) throws Exception {
|
|
System.out.print(" Parsing Record Block ------- ");
|
|
|
|
RecordAccessor recordAccessor = new RecordAccessor();
|
|
recordAccessor.setPosition(number);
|
|
if(recordAccessor.save()) System.out.println("Success!");
|
|
else {
|
|
System.out.println("ERROR!");
|
|
throw new Exception("Error saving the: " + recordAccessor.getId());
|
|
}
|
|
|
|
return recordAccessor;
|
|
}
|
|
|
|
public ValueAccessor parseValueBlock(Element valueElement, int number) throws Exception {
|
|
System.out.print(" Parsing Value Block ------- ");
|
|
|
|
ValueAccessor valueAccessor = new ValueAccessor();
|
|
|
|
String value = valueElement.getTextContent();
|
|
|
|
valueAccessor.setValue(value);
|
|
valueAccessor.setType("String");
|
|
valueAccessor.setPosition(number);
|
|
|
|
if(valueAccessor.save()) System.out.println("Success!");
|
|
else {
|
|
System.out.println("ERROR!");
|
|
throw new Exception("Error saving the: " + valueAccessor.getId());
|
|
}
|
|
|
|
return valueAccessor;
|
|
}
|
|
}
|