| /******************************************************************************* |
| * Copyright (c) 2011 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.jaxb.core.internal.context.java; |
| |
| import org.eclipse.jdt.core.dom.CompilationUnit; |
| import org.eclipse.jpt.common.core.utility.TextRange; |
| import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; |
| import org.eclipse.jpt.jaxb.core.context.JaxbPersistentClass; |
| import org.eclipse.jpt.jaxb.core.context.XmlSeeAlso; |
| import org.eclipse.jpt.jaxb.core.resource.java.XmlSeeAlsoAnnotation; |
| |
| public class GenericJavaXmlSeeAlso |
| extends AbstractJavaContextNode |
| implements XmlSeeAlso { |
| |
| protected final XmlSeeAlsoAnnotation annotation; |
| |
| protected final ValueContainer valueContainer; |
| |
| |
| public GenericJavaXmlSeeAlso(JaxbPersistentClass parent, XmlSeeAlsoAnnotation annotation) { |
| super(parent); |
| this.annotation = annotation; |
| this.valueContainer = new ValueContainer(); |
| } |
| |
| |
| public JaxbPersistentClass getPersistentClass() { |
| return (JaxbPersistentClass) getParent(); |
| } |
| |
| @Override |
| public void synchronizeWithResourceModel() { |
| super.synchronizeWithResourceModel(); |
| this.valueContainer.synchronizeWithResourceModel(); |
| } |
| |
| public ListIterable<String> getClasses() { |
| return this.valueContainer.getContextElements(); |
| } |
| |
| public int getClassesSize() { |
| return this.valueContainer.getContextElementsSize(); |
| } |
| |
| public void addClass(int index, String clazz) { |
| this.annotation.addClass(index, clazz); |
| this.valueContainer.addContextElement(index, clazz); |
| } |
| |
| public void removeClass(int index) { |
| this.annotation.removeClass(index); |
| this.valueContainer.removeContextElement(index); |
| } |
| |
| public void moveClass(int targetIndex, int sourceIndex) { |
| this.annotation.moveClass(targetIndex, sourceIndex); |
| this.valueContainer.moveContextElement(targetIndex, sourceIndex); |
| } |
| |
| public Iterable<String> getDirectlyReferencedTypeNames() { |
| return this.annotation.getFullyQualifiedClasses(); |
| } |
| |
| @Override |
| public TextRange getValidationTextRange(CompilationUnit astRoot) { |
| return this.annotation.getTextRange(astRoot); |
| } |
| |
| |
| protected class ValueContainer |
| extends ListContainer<String, String> { |
| |
| @Override |
| protected String getContextElementsPropertyName() { |
| return CLASSES_LIST; |
| } |
| |
| @Override |
| protected String buildContextElement(String resourceElement) { |
| return resourceElement; |
| } |
| |
| @Override |
| protected ListIterable<String> getResourceElements() { |
| return GenericJavaXmlSeeAlso.this.annotation.getClasses(); |
| } |
| |
| @Override |
| protected String getResourceElement(String contextElement) { |
| return contextElement; |
| } |
| } |
| } |