/*******************************************************************************
* Copyright (c) 2007-2009 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.hibernate.eclipse.jdt.ui.internal.jpa.common;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.ICompilationUnit;
/**
* To handle EntityInfo bundle complex properties:
* for example several EntityInfos in one file ->
* so here is necessary to handle it's imports
*
* @author Vitali
*/
public class EntityInfosCollection {
/**
* path to the innermost resource enclosing these EntityInfos
*/
protected IPath path;
/**
*
*/
protected ICompilationUnit iCompilationUnit;
/**
*
*/
protected org.eclipse.jdt.core.dom.CompilationUnit compilationUnit;
/**
* collection of EntityInfo's
*/
protected HashMap<String, EntityInfo> entityInfos = new HashMap<String, EntityInfo>();
/**
* existing imports set
*/
protected Set<String> setExistingImports = new TreeSet<String>();
/**
* required imports set
*/
protected Set<String> setRequiredImports = new TreeSet<String>();
public void addEntityInfo(EntityInfo ei) {
entityInfos.put(ei.getFullyQualifiedName(), ei);
}
public EntityInfo getEntityInfo(String fullyQualifiedName) {
return entityInfos.get(fullyQualifiedName);
}
public void updateExistingImportSet() {
setExistingImports.clear();
Iterator<EntityInfo> it = entityInfos.values().iterator();
while (it.hasNext()) {
it.next().collectExistingImport(setExistingImports);
}
}
public void updateRequiredImportSet() {
setRequiredImports.clear();
Iterator<EntityInfo> it = entityInfos.values().iterator();
while (it.hasNext()) {
it.next().collectRequiredImport(setRequiredImports);
}
}
public boolean needImport(String checkImport) {
return (!setExistingImports.contains(checkImport) && setRequiredImports.contains(checkImport));
}
public IPath getPath() {
return path;
}
public void setPath(IPath path) {
this.path = path;
}
public ICompilationUnit getICompilationUnit() {
return iCompilationUnit;
}
public void setICompilationUnit(ICompilationUnit iCompilationUnit) {
this.iCompilationUnit = iCompilationUnit;
}
public org.eclipse.jdt.core.dom.CompilationUnit getCompilationUnit() {
return compilationUnit;
}
public void setCompilationUnit(org.eclipse.jdt.core.dom.CompilationUnit compilationUnit) {
this.compilationUnit = compilationUnit;
}
public String toString() {
StringBuffer res = new StringBuffer();
Iterator<EntityInfo> it = entityInfos.values().iterator();
while (it.hasNext()) {
res.append(it.next());
res.append(";"); //$NON-NLS-1$
}
return res.toString();
}
public int hashCode() {
return toString().hashCode();
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof EntityInfosCollection)) {
return false;
}
EntityInfosCollection eic = (EntityInfosCollection)obj;
if (toString().equals(eic.toString())) {
return true;
}
return false;
}
}