diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java deleted file mode 100644 index 920541a18f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java +++ /dev/null @@ -1,178 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2007 Oracle. 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: Oracle. - initial API and implementation - * - *******************************************************************************/ -package org.eclipse.jpt.core.internal.synch; - -import java.io.IOException; -import java.util.Iterator; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.jdt.core.IType; -import org.eclipse.jpt.core.internal.IJpaFile; -import org.eclipse.jpt.core.internal.IMappingKeys; -import org.eclipse.jpt.core.internal.IPersistentType; -import org.eclipse.jpt.core.internal.JptCoreMessages; -import org.eclipse.jpt.core.internal.JptCorePlugin; -import org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal; -import org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode; -import org.eclipse.jpt.core.internal.content.persistence.JavaClassRef; -import org.eclipse.jpt.core.internal.content.persistence.MappingFileRef; -import org.eclipse.jpt.core.internal.content.persistence.Persistence; -import org.eclipse.jpt.core.internal.content.persistence.PersistenceFactory; -import org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit; -import org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode; -import org.eclipse.jpt.core.internal.content.persistence.resource.PersistenceResource; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.Filter; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; -import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; - -/** - * Synchronizes the lists of persistent classes in a persistence unit and a - * persistence project. - */ -public class SynchronizeClassesJob extends Job -{ - private IFile persistenceXmlFile; - - - public SynchronizeClassesJob(IFile file) { - super(JptCoreMessages.SYNCHRONIZE_CLASSES_JOB); - setRule(file.getProject()); - this.persistenceXmlFile = file; - } - - protected IStatus run(IProgressMonitor monitor) { - monitor.beginTask(JptCoreMessages.SYNCHRONIZING_CLASSES_TASK, 150); - - if (monitor.isCanceled()) { - return Status.CANCEL_STATUS; - } - - IJpaFile jpaFile = JptCorePlugin.jpaFile(this.persistenceXmlFile); - PersistenceXmlRootContentNode root; - try { - root = (PersistenceXmlRootContentNode) jpaFile.getContent(); - } - catch (ClassCastException cce) { - return new Status(IStatus.ERROR, JptCorePlugin.PLUGIN_ID, JptCoreMessages.INVALID_PERSISTENCE_XML_CONTENT); - } - - Persistence persistence = root.getPersistence(); - - if (persistence == null) { - persistence = PersistenceFactory.eINSTANCE.createPersistence(); - root.setPersistence(persistence); - } - - PersistenceUnit persistenceUnit; - - if (persistence.getPersistenceUnits().size() > 0) { - persistenceUnit = persistence.getPersistenceUnits().get(0); - } - else { - persistenceUnit = PersistenceFactory.eINSTANCE.createPersistenceUnit(); - persistenceUnit.setName(this.persistenceXmlFile.getProject().getName()); - persistence.getPersistenceUnits().add(persistenceUnit); - } - - PersistenceResource resource = (PersistenceResource) persistenceUnit.eResource(); - - persistenceUnit.getClasses().clear(); - for (Iterator<String> stream = this.sortedMappedTypeNames(persistenceUnit); stream.hasNext(); ) { - JavaClassRef classRef = PersistenceFactory.eINSTANCE.createJavaClassRef(); - classRef.setJavaClass(stream.next()); - persistenceUnit.getClasses().add(classRef); - } - - monitor.worked(50); - - try { - resource.save(null); - } - catch (IOException ioe) { - return new Status(IStatus.ERROR, JptCorePlugin.PLUGIN_ID, JptCoreMessages.ERROR_WRITING_FILE, ioe); - } - - return Status.OK_STATUS; - } - - private Iterator<String> sortedMappedTypeNames(PersistenceUnit persistenceUnit) { - return CollectionTools.sort(this.mappedTypeNames(persistenceUnit)); - } - - private Iterator<String> mappedTypeNames(PersistenceUnit persistenceUnit) { - return new TransformationIterator<IPersistentType, String>(this.mappedTypes(persistenceUnit)) { - @Override - protected String transform(IPersistentType pType) { - return pType.findJdtType().getFullyQualifiedName(); - } - }; - } - - private Iterator<IPersistentType> mappedTypes(PersistenceUnit persistenceUnit) { - return new FilteringIterator<IPersistentType>(persistenceUnit.getJpaProject().javaPersistentTypes(), filter(persistenceUnit)); - } - - private Filter<IPersistentType> filter(final PersistenceUnit persistenceUnit) { - return new Filter<IPersistentType>() { - public boolean accept(IPersistentType o) { - if (o == null) { - return false; - } - if (o.getMappingKey() == IMappingKeys.NULL_TYPE_MAPPING_KEY) { - return false; - } - IType jdtType = o.findJdtType(); - if (jdtType == null) { - return false; - } - for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFiles()) { - if (containsType(mappingFileRef, jdtType)) { - return false; - } - } - return true; - } - }; - } - - private boolean containsType(MappingFileRef mappingFileRef, IType jdtType) { - IJpaFile mappingFile = mappingFileRef.getMappingFile(); - if (mappingFile == null) { - return false; - } - - XmlRootContentNode root; - try { - root = (XmlRootContentNode) mappingFile.getContent(); - } - catch (ClassCastException cce) { - return false; - } - - EntityMappingsInternal entityMappings = root.getEntityMappings(); - - if (entityMappings == null) { - return false; - } - - for (IPersistentType persistentType : entityMappings.getPersistentTypes()) { - IType otherJdtType = persistentType.findJdtType(); - if (otherJdtType != null && otherJdtType.equals(jdtType)) { - return true; - } - } - - return false; - } -} |