package org.openflexo.foundation.viewpoint;
import org.openflexo.foundation.view.View;
import org.openflexo.foundation.viewpoint.ViewPoint.ViewPointBuilder;
public class EditionPatternPatternRole extends PatternRole {
private EditionPattern editionPatternType;
private CreationScheme creationScheme;
private String _creationSchemeURI;
public EditionPatternPatternRole(ViewPointBuilder builder) {
super(builder);
}
@Override
public PatternRoleType getType() {
return PatternRoleType.EditionPattern;
}
@Override
public String getPreciseType() {
if (getEditionPatternType() != null) {
return getEditionPatternType().getName();
}
return "EditionPattern";
}
@Override
public Class<?> getAccessedClass() {
return View.class;
}
@Override
public boolean getIsPrimaryRole() {
return false;
}
@Override
public void setIsPrimaryRole(boolean isPrimary) {
// Not relevant
}
public EditionPattern getEditionPatternType() {
if (getCreationScheme() != null) {
return getCreationScheme().getEditionPattern();
}
return editionPatternType;
}
public void setEditionPatternType(EditionPattern editionPatternType) {
if (editionPatternType != this.editionPatternType) {
this.editionPatternType = editionPatternType;
if (getCreationScheme() != null && getCreationScheme().getEditionPattern() != editionPatternType) {
setCreationScheme(null);
}
for (EditionScheme s : getEditionPattern().getEditionSchemes()) {
s.updateBindingModels();
}
}
}
public String _getCreationSchemeURI() {
if (getCreationScheme() != null) {
return getCreationScheme().getURI();
}
return _creationSchemeURI;
}
public void _setCreationSchemeURI(String uri) {
if (getViewPointLibrary() != null) {
creationScheme = (CreationScheme) getViewPointLibrary().getEditionScheme(uri);
for (EditionScheme s : getEditionPattern().getEditionSchemes()) {
s.updateBindingModels();
}
}
_creationSchemeURI = uri;
}
public CreationScheme getCreationScheme() {
if (creationScheme == null && _creationSchemeURI != null && getViewPointLibrary() != null) {
creationScheme = (CreationScheme) getViewPointLibrary().getEditionScheme(_creationSchemeURI);
}
return creationScheme;
}
public void setCreationScheme(CreationScheme creationScheme) {
this.creationScheme = creationScheme;
if (creationScheme != null) {
_creationSchemeURI = creationScheme.getURI();
}
}
}