/*- * ================================================================================ * eCOMP Portal SDK * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ================================================================================ */ package org.openecomp.portalsdk.analytics.gmap.node; import java.awt.geom.Point2D; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.openecomp.portalsdk.analytics.gmap.map.MapConstant; import org.openecomp.portalsdk.analytics.gmap.map.NovaMap; public class Node { private Set nodeIDSet; private NodeCollection nodeCollection; private ArrayList selectionList; private NovaMap map; public Node(NovaMap map) { this.map = map; nodeCollection = new NodeCollection(); nodeIDSet = new HashSet(); selectionList = new ArrayList(); } public NodeInfo addNode(double longitude, double latitude, String nodeType, String nodeID, String nodeAttributes, int state, boolean moveable, boolean deleteable) { NodeInfo nodeInfo = new NodeInfo(nodeID); nodeInfo.geoCoordinate.longitude = longitude; nodeInfo.geoCoordinate.latitude = latitude; nodeInfo.setNodeType(nodeType); nodeInfo.setState(state); nodeInfo.setMoveable(moveable); nodeInfo.setDeleteable(deleteable); nodeInfo.initializeAttributes(nodeAttributes); //if (nodeCollection.getNode(nodeInfo.getNodeID()+""+nodeInfo.getNodeType()) == null) { nodeCollection.addNode(nodeInfo); nodeIDSet.add(nodeID); /* } else { return nodeCollection.getNode(nodeType); } */ return nodeInfo; } /** * */ /* public void updateNumberT1(String currentYearMonth) { ArrayList nodeCollection = this.nodeCollection.getNodeCollection(); for (NodeInfo nodeInfo : nodeCollection) { nodeInfo.setAttribute(NodeInfo.NUMBER_OF_T1_KEY, nodeInfo.getAttribute(currentYearMonth)); } } */ /* public Set getUniqueNumberT1(String currentYearMonth) { ArrayList nodeCollection = this.nodeCollection.getNodeCollection(); Set numberT1Set = new TreeSet(); for (NodeInfo nodeInfo : nodeCollection) { numberT1Set.add(Integer.parseInt(nodeInfo.getAttribute(currentYearMonth).toString())); } return numberT1Set; } */ public void updateNumberT1(String currentYearMonth) { HashMap hashMap = this.nodeCollection.getNodeCollection(); Set set = hashMap.entrySet(); for (Iterator iterator = set.iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); NodeInfo nodeInfo = (NodeInfo) entry.getValue(); nodeInfo.setAttribute(NodeInfo.NUMBER_OF_T1_KEY, nodeInfo.getAttribute(currentYearMonth)); } } public Set getUniqueNumberT1(String currentYearMonth) { HashMap hashMap = this.nodeCollection.getNodeCollection(); Set set = hashMap.entrySet(); Set numberT1Set = new TreeSet(); for (Iterator iterator = set.iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); NodeInfo nodeInfo = (NodeInfo) entry.getValue(); numberT1Set.add(Integer.parseInt(nodeInfo.getAttribute(currentYearMonth).toString())); } return numberT1Set; } /** * * @param screenPoint * @return list of NodeInfo within screenPoint. If not found, null is return */ public ArrayList nodeExist(Point2D screenPoint) { ArrayList existNodeInfo = null; int nearest = 9999; String selectedNode = null; String selectedType = null; int nodeSize = map.getShapeWidth(); HashMap hashMap = nodeCollection.getNodeCollection(); Set set = hashMap.entrySet(); //ArrayList list = nodeCollection.getNodeCollection(); for (Iterator iterator = set.iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); NodeInfo nodeInfo = (NodeInfo) entry.getValue(); if (!map.containsShowList(nodeInfo.getNodeType())) { continue; } int width = (map.getColorProperties().getSize(nodeInfo.getNodeType()) * nodeSize) / 5; int foundFactor = (int) (MapConstant.ZOOMING_INDEX * width); Point2D nodePoint = map.getScreenPointFromLonLat(nodeInfo.geoCoordinate.longitude, nodeInfo.geoCoordinate.latitude); int lonDiff = (int) Math.abs(screenPoint.getX() - nodePoint.getX()); int latDiff = (int) Math.abs(screenPoint.getY() - nodePoint.getY()); if (lonDiff < foundFactor && latDiff < foundFactor) { if (lonDiff < nearest) { nearest = lonDiff; selectedNode = nodeInfo.getNodeID(); selectedType = nodeInfo.getNodeType(); nodeCollection.setNodeID(selectedNode); } if (existNodeInfo == null) { existNodeInfo = new ArrayList(); } existNodeInfo.add(nodeInfo); } } return existNodeInfo; } public NodeCollection getNodeCollection() { return nodeCollection; } public void clearNodeIDSet() { nodeIDSet.clear(); } public void clearSelectionList() { selectionList.clear(); } }