All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unlaxer.jaddress.gremlin.DataLoader2 Maven / Gradle / Ivy

package org.unlaxer.jaddress.gremlin;

import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.unlaxer.jaddress.GradleStructure;
import org.unlaxer.jaddress.ProjectContext;
import org.unlaxer.jaddress.SubProjects;
import org.unlaxer.jaddress.entity.standard.郵便番号;
import org.unlaxer.jaddress.parser.AddressContext;
import org.unlaxer.jaddress.parser.AddressParser;
import org.unlaxer.jaddress.parser.AddressParserImpl;
import org.unlaxer.jaddress.parser.DataAccessContext;
import org.unlaxer.jaddress.parser.DataAccessContextImpl;
import org.unlaxer.jaddress.parser.ParsingContext;
import org.unlaxer.util.collection.ID;

public class DataLoader2 {
	Logger logger = LoggerFactory.getLogger(getClass());
	DataAccessContext dataAccessContext = new DataAccessContextImpl();
	AddressParser addressParser = new AddressParserImpl();

	public DataLoader2() {
	}

	public List load(GraphTraversalSource g) throws IOException {
		logger.info("start");
		List errors = new ArrayList<>();
		
		GremlinUtil gremlinUtil = new GremlinUtil(g);

		Path path = ProjectContext.getPath(SubProjects.main, GradleStructure.testResources, "testAddress.tsv");
		try (BufferedReader br = Files.newBufferedReader(path)) {
			String text;
			int i =0;
			while ((text = br.readLine()) != null) {
				i++;
				
				List list = Arrays.asList(text.split("\t"));
				if(list.size() <2) {
					logger.warn(String.format("bad data:[%d]:%s",i,text));
					continue;
				}

				List list2 = list.subList(1, list.size());
				AddressContext addressContext = new AddressContext(
						ID.generate() 
						, new 郵便番号(list.get(0)),
						list2
						);
				
				ParsingContext parsingContext = new ParsingContext(dataAccessContext, addressContext);
				try {
					AddressContext parse = addressParser.parse(parsingContext);
					gremlinUtil.create(parsingContext.addressContext);
				}catch (Exception e) {
					logger.error("load:"+i, e);
					errors.add(text);
					throw e;
				}

			}
		}

		logger.info("end");
		return errors;
	}


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy