Example #1
0
  /* (non-Javadoc)
   * @see com.nebulent.vectura.services.resources.v1.AccountResource#createAccountPlace(java.lang.String, nebulent.schema.software.vectura._1.Place)
   */
  @Override
  public Place createAccountPlace(String accountId, Place placeType) {
    if (StringUtils.isBlank(accountId)) {
      throw new BadRequestException(
          new StatusResponse(false, "Account ID is a required field.", null));
    }

    placeType.setAccountId(accountId);
    com.nebulent.vectura.data.model.mongodb.Place location = DomainUtils.toLocation(placeType);
    location.setAccountUuid(accountId);

    Map<AddressComponent, String> parsedAddr =
        AddressParser.parseAddress(location.getAddress().toSingleLine());
    String normalizedAddress = AddressStandardizer.toSingleLine(parsedAddr);
    int addressHash = new HashCodeBuilder().append(normalizedAddress).toHashCode();

    if (addressHash != 0) {
      System.out.println(
          "Trying to find by address hash:"
              + addressHash
              + " and "
              + location.getAddress().toString());
      com.nebulent.vectura.data.model.mongodb.Place placeByHash =
          getMongoRepository().findPlaceByAccountUuidAndAddressHash(accountId, addressHash);
      if (placeByHash == null) {
        AddressInfo addressType = mapService.getLocationByAddress(location.getAddress().toString());
        if (addressType != null) {
          com.nebulent.vectura.data.model.mongodb.core.AddressInfo addressInfo =
              DomainUtils.toAddress(addressType);
          if (logger.isDebugEnabled()) {
            logger.debug("Adding location with address:" + addressInfo);
          }
          if (addressInfo != null && StringUtils.isNotBlank(addressInfo.getAddressLine1())) {
            location.setAddress(addressInfo);
            location.getAddress().setHash(addressHash);
            location.setLocation(location.getAddress().getLocation());
            location = getMongoRepository().getPlaceRepository().save(location);
          }
        }
      } else {
        System.out.println(
            "Found by address hash:" + addressHash + " and " + placeByHash.toString());

        location = placeByHash;
      }
    }

    return DomainUtils.toLocation(location);
  }
  public static void main(String[] args) throws Exception {

    JdbcDataSource WorkingtigerDs = new JdbcDataSource();
    WorkingtigerDs.setURL(
        "jdbc:h2:C:\\Users\\Gateway\\Documents\\GitHub\\JGeocoder\\local\\street_data.h2");
    final Logger logger = Logger.getLogger(import_tiger_main.class);

    String csvFile;
    Scanner inFile = null;
    String[] holdFileLine = null;
    logger.info("Initialized import_tiger_main");
    csvFile =
        ("C:\\Users\\Gateway\\Documents\\GitHub\\JGeocoder\\jgeocoder\\src\\main\\java\\net\\sourceforge\\jgeocoder\\ConvertedDate.csv");
    inFile = new Scanner(new File(csvFile));
    int count = 0;
    String fedirp = null;
    String fedirs = null;
    String fetype = null;
    String msg = null;

    QueryRunner run = new QueryRunner();

    try {
      Connection conn = WorkingtigerDs.getConnection();
      int updates = run.update(conn, "DROP TABLE IF EXISTS TIGER_NY;");
      updates =
          run.update(
              conn,
              "create table TIGER_NY ( TLID numeric not null, TFIDL varchar(255),"
                  + "TFIDR varchar(255), ARIDL varchar(255),"
                  + "ARIDR varchar(255),LINEARID varchar(255),FEDIRP varchar(255),FENAME varchar(255),"
                  + "FETYPE  varchar(255), FEDIRS varchar(255), FULLNAME varchar(255), "
                  + "FRADDL varchar(255), TOADDL varchar(255),FRADDR  varchar(255), "
                  + "TOADDR  varchar(255), ZIPL varchar(255),ZIPR varchar (255),"
                  + " EDGEMTFCC  varchar(255), ROADMTFCC varchar(255), PARITYL varchar(255), "
                  + "PARITYR  varchar(255), PLUS4L  varchar(255),"
                  + "PLUS4R  varchar(255), LFROMTYP  varchar(255), LTOTYP "
                  + "varchar(255), RFROMTYP  varchar(255),"
                  + "RTOTYP  varchar(255), OFFSETL  varchar(255), OFFSETR  "
                  + "varchar(255), BBOX text,NUMPARTS text,"
                  + "SHAPETYPE numeric, LATLONGPAIRS text);");
      // numeric

      while (inFile.hasNextLine()) {
        String line = inFile.nextLine();

        count++;
        holdFileLine = line.split(",");
        if (count % 1000 == 0) {
          logger.info(count + "records inserted.");
        }

        Map<AddressComponent, String> m = null;

        try {

          if (holdFileLine[9] != null) {
            if (holdFileLine[6].equals("Federal Hill Rd II")) {
              msg = "Parser does not handle: " + holdFileLine[6] + " . Will return null pointer.";
              logger.error(msg);
              continue;
            }
            if (holdFileLine[6].equals("Black Bridge Rd II")) {
              msg = "Parser does not handle: " + holdFileLine[6] + " . Will return null pointer.";
              logger.error(msg);
              continue;
            }

            m = AddressParser.parseAddress("103 " + holdFileLine[6] + " " + holdFileLine[11]);
          } else {
            m = AddressParser.parseAddress("103 " + holdFileLine[6] + " " + holdFileLine[12]);
          }
          if (m == null) {
            msg = "Error parsing: " + line + ".";
            logger.error(msg);
            continue;
          }

          m = AddressStandardizer.normalizeParsedAddress(m);
          if (m.get(AddressComponent.PREDIR) == null) {
            fedirp = null;
          } else {
            fedirp = m.get(AddressComponent.PREDIR);
          }

          if (m.get(AddressComponent.POSTDIR) == "null") {
            fedirs = null;
          } else {
            fedirs = m.get(AddressComponent.PREDIR);
          }

          if (m.get(AddressComponent.TYPE) == "null") {
            fetype = null;
            msg = "FETYPE is null for: " + line + ".";
            logger.warn(msg);
          } else {
            fetype = m.get(AddressComponent.TYPE);
          }

          String[] temp = new String[holdFileLine.length + 4];
          for (int i = 0; i < holdFileLine.length - 1; i++) {
            temp[i] = holdFileLine[i];
          }
          String street = m.get(AddressComponent.STREET);
          temp[temp.length - 4] = fedirp;
          temp[temp.length - 3] = street;
          temp[temp.length - 2] = fetype;
          temp[temp.length - 1] = fedirs;
          holdFileLine = temp;

          if (!conn.isValid(1)) {
            conn.close();
            conn = WorkingtigerDs.getConnection();
          }
          updates =
              run.update(
                  conn,
                  "insert into TIGER_NY( TLID,TFIDL,TFIDR,ARIDL,ARIDR,LINEARID,"
                      + "FULLNAME,FRADDL,TOADDL,FRADDR,TOADDR,ZIPL,ZIPR,EDGEMTFCC, ROADMTFCC,"
                      + "PARITYL,PARITYR,"
                      + "PLUS4L,PLUS4R,"
                      + "LFROMTYP,LTOTYP,RFROMTYP,RTOTYP,OFFSETL,OFFSETR,BBOX,NUMPARTS,SHAPETYPE,"
                      + "LATLONGPAIRS,FEDIRP,FENAME,FETYPE,FEDIRS) "
                      + " values (?,?,?,?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,"
                      + "?)",
                  holdFileLine);
        } catch (SQLException sqle) {
          logger.error(sqle);
          throw sqle;
        }
      }
      if (!conn.isValid(1)) {
        conn.close();
        conn = WorkingtigerDs.getConnection();
      }
      System.out.println("creating indicies on TIGER_NY");
      run.update(conn, "create index IDX0_TIGER_NY on TIGER_NY(tlid)");
      run.update(conn, "create index IDX1_TIGER_NY on TIGER_NY(fename)");
      run.update(conn, "create index IDX2_TIGER_NY on TIGER_NY(fraddL)");
      run.update(conn, "create index IDX3_TIGER_NY on TIGER_NY(toaddL)");
      run.update(conn, "create index IDX4_TIGER_NY on TIGER_NY(fraddR)");
      run.update(conn, "create index IDX5_TIGER_NY on TIGER_NY(toaddR)");
      run.update(conn, "create index IDX6_TIGER_NY on TIGER_NY(zipL)");
      run.update(conn, "create index IDX7_TIGER_NY on TIGER_NY(zipR)");

      conn.close();
    } catch (SQLException sqle) {
      logger.error(sqle);
      throw sqle;
    }
  }