/* * ============LICENSE_START========================================== * ONAP Portal SDK * =================================================================== * Copyright © 2017 AT&T Intellectual Property. All rights reserved. * Modifications Copyright (C) 2018 Samsung Electronics Co., Ltd. * =================================================================== * * Unless otherwise specified, all software contained herein is licensed * under the Apache License, Version 2.0 (the "License"); * you may not use this software 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. * * Unless otherwise specified, all documentation contained herein is licensed * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); * you may not use this documentation except in compliance with the License. * You may obtain a copy of the License at * * https://creativecommons.org/licenses/by/4.0/ * * Unless required by applicable law or agreed to in writing, documentation * 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. * * ============LICENSE_END============================================ * * */ package org.onap.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.onap.portalsdk.analytics.gmap.map.MapConstant; import org.onap.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(NodeParam nodeParam) { NodeInfo nodeInfo = new NodeInfo(nodeParam.getNodeID()); nodeInfo.geoCoordinate.longitude = nodeParam.getLongitude(); nodeInfo.geoCoordinate.latitude = nodeParam.getLatitude(); nodeInfo.setNodeType(nodeParam.getNodeType()); nodeInfo.setState(nodeParam.getState()); nodeInfo.setMoveable(nodeParam.isMoveable()); nodeInfo.setDeleteable(nodeParam.isDeleteable()); nodeInfo.initializeAttributes(nodeParam.getNodeAttributes()); nodeCollection.addNode(nodeInfo); nodeIDSet.add(nodeParam.getNodeID()); return nodeInfo; } 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(); 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(); } }