Untitled
unknown
plain_text
a year ago
5.4 kB
5
Indexable
package com.ericsson.msdp.spg.gcp.eai; import com.ericsson.msdp.spg.gcp.GenericQuery; import com.ericsson.msdp.spg.model.*; import com.ericsson.msdp.spg.repositories.EaiRowMapper; import com.ericsson.msdp.spg.model.GeoPoint; import com.google.cloud.bigquery.FieldValue; import com.google.cloud.bigquery.FieldValueList; import com.google.cloud.bigquery.QueryJobConfiguration; import com.google.cloud.bigquery.TableResult; import lombok.Getter; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Iterator; import java.util.Map; import java.util.function.Function; @Getter class SelectNodesQueries implements GenericQuery<Void> { private static Logger logger = LoggerFactory.getLogger(SelectNodesQueries.class); private EaiRowMapper mapper; private long eaiType; private String query; private String queryA; private String queryB; private Map<Long, Long> aliasMapping; private NodeIndexer<BasicNode> nodeIndexer; public SelectNodesQueries(EaiRowMapper mapper, Long eaiType, String query, String queryA, String queryB, Map<Long, Long> aliasMapping, NodeIndexer<BasicNode> nodeIndexer) { this.mapper = mapper; this.eaiType = eaiType; this.query = query; this.queryA = queryA; this.queryB = queryB; this.aliasMapping = aliasMapping; this.nodeIndexer = nodeIndexer; } @Override public Void execute(Function<QueryJobConfiguration.Builder, TableResult> fun) { Iterator<FieldValueList> attributes = fun.apply(QueryJobConfiguration.newBuilder(queryA)).iterateAll().iterator(); FieldValueList link = null; Iterator<FieldValueList> links = null; if (StringUtils.isNotEmpty(queryB)) { links = fun.apply(QueryJobConfiguration.newBuilder(queryB)).iterateAll().iterator(); link = links.hasNext() ? links.next() : null; } FieldValueList attr = attributes.hasNext() ? attributes.next() : null; for (FieldValueList row : fun.apply(QueryJobConfiguration.newBuilder(query)).iterateAll()) { var networkNode = mapper.mapMain(row, nodeIndexer.newNode()); networkNode.mapId(Id.of(eaiType, networkNode.getEaiId())); if (networkNode instanceof NetworkNode) { ((NetworkNode) networkNode).setSite(SiteId.of(Id.of(row.get("SITE_TYPE").getLongValue(), row.get("SITE_ID").getLongValue()))); while (link != null && link.get("SOURCE_OBJECT_ID").getLongValue() == networkNode.getEaiId()) { FieldValue targetObjectType = link.get("TARGET_OBJECT_TYPE"); FieldValue targetObjectId = link.get("TARGET_OBJECT_ID"); Long targetType = aliasMapping.getOrDefault(targetObjectType.getLongValue(), targetObjectType.getLongValue()); ((NetworkNode) networkNode).getLinks().add(Id.of(targetType, targetObjectId.getLongValue()).toString()); link = links.hasNext() ? links.next() : null; } } if (networkNode instanceof SiteNode) { try { ((SiteNode) networkNode).setLocation(GeoPoint.of(row.get("LATITUDE").getDoubleValue(), row.get("LONGITUDE").getDoubleValue())); } catch (Exception e) { logger.warn("Site {} has no geo location available", networkNode.getName()); } } while (attr != null && attr.get("OWNING_OBJECT_ID").getLongValue() == networkNode.getEaiId()) { mapper.mapAttr(attr, networkNode); attr = attributes.hasNext() ? attributes.next() : null; } //all sites need to have regions. Security roles depends on it // if (networkNode instanceof SiteNode && ((SiteNode) networkNode).getRegion() == null) { // logger.warn("Site {} doesn't have an region assigned.", networkNode.getName()); // ((SiteNode) networkNode).setRegion("UNKNOWN"); // } if (networkNode instanceof SiteNode) { if (((SiteNode) networkNode).getRegion() == null) { logger.info("Site {} doesn't have an region assigned.", networkNode.getName()); System.out.println("Site doesn't have an region assigned."+ networkNode.getName()); ((SiteNode) networkNode).setRegion("UNKNOWN"); } // } else if (((SiteNode) networkNode).getRegion().contains("Region")) { // logger.info("region*********{}", ((SiteNode) networkNode).getRegion()); // System.out.println("region*********"+ ((SiteNode) networkNode).getRegion()); // ((SiteNode) networkNode).setRegion("UNKNOWN"); // } } nodeIndexer.index(networkNode); } nodeIndexer.flush(); logger.info("Query for class type {} returned {} nodes.", mapper.getEaiClassName(), nodeIndexer.getCount()); //python ProcessBuilder builder = new ProcessBuilder("python", "C:\\Users\\ensaani\\OneDrive - Ericsson\\Desktop\\NGRVA Projects\\pythontest.py", "2", "10"); // Replace with arguments Process process = builder.start(); // Read and handle output from the Python script (optional) BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line= null; while ((line = reader.readLine()) != null) { System.out.println(line); } return null; } }
Editor is loading...
Leave a Comment