001 002package gudusoft.gsqlparser.dlineage.dataflow.model.xml; 003 004import gudusoft.gsqlparser.dlineage.dataflow.model.json.Coordinate; 005import gudusoft.gsqlparser.util.SQLUtil; 006 007public class PositionUtil { 008 009 public static Coordinate getStartPos(String coordinate, int index) { 010 if (!SQLUtil.isEmpty(coordinate)) { 011 String firstCoordinate = coordinate.substring(coordinate.indexOf("[") + 1, coordinate.indexOf("]")); 012 int length = firstCoordinate.split(",").length; 013 014 String[] splits = coordinate.replace("[", "").replace("]", "").split(","); 015 if (splits.length % (2 * length) == 0) { 016 return new Coordinate(Long.parseLong(splits[index * (2 * length) + 0].trim()), 017 Long.parseLong(splits[index * (2 * length) + 1].trim()), 018 splits[index * (2 * length) + 2].trim()); 019 } 020 } 021 return null; 022 } 023 024 public static Coordinate getEndPos(String coordinate, int index) { 025 if (!SQLUtil.isEmpty(coordinate)) { 026 String firstCoordinate = coordinate.substring(coordinate.indexOf("[") + 1, coordinate.indexOf("]")); 027 int length = firstCoordinate.split(",").length; 028 029 String[] splits = coordinate.replace("[", "").replace("]", "").split(","); 030 if (splits.length % (2 * length) == 0) { 031 return new Coordinate(Long.parseLong(splits[index * (2 * length) + length].trim()), 032 Long.parseLong(splits[index * (2 * length) + length + 1].trim()), 033 splits[index * (2 * length) + length + 2].trim()); 034 } 035 } 036 return null; 037 } 038 039 public static int getOccurrencesNumber(String coordinate) { 040 if (!SQLUtil.isEmpty(coordinate)) { 041 String firstCoordinate = coordinate.substring(coordinate.indexOf("[") + 1, coordinate.indexOf("]")); 042 int length = firstCoordinate.split(",").length; 043 044 String[] splits = coordinate.replace("[", "").replace("]", "").split(","); 045 if (splits.length % (2 * length) == 0) { 046 return splits.length / (2 * length); 047 } 048 } 049 return 0; 050 } 051}