/******************************************************************************* * Copyright © 2005, 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * *******************************************************************************/ package org.eclipse.edt.ide.core.internal.dependency; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * @author svihovec * */ public class DependencyEntry implements IDependencyGraphEntry { Set qualifiedNames = Collections.EMPTY_SET; Set simpleNames = Collections.EMPTY_SET; public void addSimpleName(SimpleName simpleName){ if(simpleNames == Collections.EMPTY_SET){ simpleNames = new HashSet(); } simpleNames.add(simpleName); } public void addQualifiedName(QualifiedName qualifiedName){ if(qualifiedNames == Collections.EMPTY_SET){ qualifiedNames = new HashSet(); } qualifiedNames.add(qualifiedName); } public Set getSimpleNames() { return simpleNames; } public void removeSimpleName(SimpleName simpleName) { simpleNames.remove(simpleName); } public void removeQualifiedName(QualifiedName qualifiedName) { qualifiedNames.remove(qualifiedName); } public Set getQualifiedNames() { return qualifiedNames; } public boolean isEmpty(){ return qualifiedNames.size() == 0 && simpleNames.size() == 0; } public void serialize(DataOutputStream outputStream) throws IOException{ outputStream.writeInt(qualifiedNames.size()); for (Iterator iter = qualifiedNames.iterator(); iter.hasNext();) { QualifiedName qualifiedName = (QualifiedName) iter.next(); qualifiedName.serialize(outputStream); } outputStream.writeInt(simpleNames.size()); for (Iterator iter = simpleNames.iterator(); iter.hasNext();) { SimpleName simpleName = (SimpleName) iter.next(); simpleName.serialize(outputStream); } } public void deserialize(DataInputStream inputStream) throws IOException{ int numQualifiedNames = inputStream.readInt(); for(int i=0; i < numQualifiedNames; i++){ QualifiedName qualifiedName = new QualifiedName(); qualifiedName.deserialize(inputStream); addQualifiedName(qualifiedName); } int numSimpleNames = inputStream.readInt(); for(int i=0; i < numSimpleNames; i++){ SimpleName simpleName = new SimpleName(); simpleName.deserialize(inputStream); addSimpleName(simpleName); } } public int getKind() { return DEPENDENCY_ENTRY; } }