/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.xml.ui.wizards;
import static org.teiid.designer.xml.ui.ModelerXmlUiConstants.PLUGIN_ID;
import java.util.Collection;
import java.util.HashSet;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.swt.widgets.Composite;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.core.workspace.ModelResource;
import org.teiid.designer.mapping.factory.MappingClassBuilderStrategy;
import org.teiid.designer.metamodels.xml.XmlFragment;
import org.teiid.designer.xml.IVirtualDocumentFragmentSource;
import org.teiid.designer.xml.ModelerXmlPlugin;
import org.teiid.designer.xml.PluginConstants;
/**
* @author PForhan
*
* @since 8.0
*/
public class NewDocumentWizardModel {
private Composite wizHolder;
private IVirtualDocumentFragmentSource source;
private XmlFragment[] fragments;
private int selectedFragmentCount;
private boolean fragmentsNeedUpdating = true;
private boolean buildEntireDocuments;
private boolean buildMappingClasses;
private int estimatedNodeCount;
private boolean useSchemaTypes = true;
private boolean buildGlobalOnly; // Note: not currently read by anyone!
private Collection unhandledModelImports;
private MappingClassBuilderStrategy strategy;
// may not be needed:
// public IDocumentsAndFragmentsPopulator populator;
public NewDocumentWizardModel() {
ModelerXmlPlugin plugin = ModelerXmlPlugin.getDefault();
if (plugin != null) {
IEclipsePreferences defaultPrefs = ModelerCore.getDefaultPreferences(PLUGIN_ID);
defaultPrefs.putBoolean(PluginConstants.PreferenceKeys.MAPPING_TYPE_FROM_XSD, true);
}
}
//
// Data methods:
//
public XmlFragment[] getFragments(ModelResource modelResource, IProgressMonitor monitor) {
if (fragmentsNeedUpdating
|| fragments == null) {
fragments = source.getFragments(modelResource, monitor);
fragmentsNeedUpdating = false;
} // endif
return fragments;
}
public void setBuildEntireDocuments(boolean buildEntireDocuments) {
// only operate if this is a change:
if (this.buildEntireDocuments != buildEntireDocuments) {
fragmentsNeedUpdating = true; // indicate that the fragments have changed
this.buildEntireDocuments = buildEntireDocuments;
} // endif
}
public boolean getBuildEntireDocuments() {
return buildEntireDocuments;
}
public void setSource(IVirtualDocumentFragmentSource source) {
if (this.source != source) {
fragmentsNeedUpdating = true; // indicate that the fragments have changed
this.source = source;
} // endif
}
public IVirtualDocumentFragmentSource getSource() {
return source;
}
public void setSelectedFragmentCount(int selectedFragmentCount) {
// only operate if this is a change:
if (this.selectedFragmentCount != selectedFragmentCount) {
fragmentsNeedUpdating = true; // indicate that the fragments have changed
this.selectedFragmentCount = selectedFragmentCount;
} // endif
}
public int getSelectedFragmentCount() {
return selectedFragmentCount;
}
public void setBuildMappingClasses(boolean buildMappingClasses) {
// has no effect upon fragmentsNeedsUpdating
this.buildMappingClasses = buildMappingClasses;
}
public boolean getBuildMappingClasses() {
return buildMappingClasses;
}
public void setEstimatedNodeCount(int estimatedNodeCount) {
// has no effect upon fragmentsNeedsUpdating
this.estimatedNodeCount = estimatedNodeCount;
}
public int getEstimatedNodeCount() {
return estimatedNodeCount;
}
public void setUseSchemaTypes(boolean useSchemaTypes) {
// only operate if this is a change:
if (this.useSchemaTypes != useSchemaTypes) {
fragmentsNeedUpdating = true; // indicate that the fragments have changed
this.useSchemaTypes = useSchemaTypes;
} // endif
}
public boolean getUseSchemaTypes() {
return useSchemaTypes;
}
public void setBuildGlobalOnly(boolean buildGlobalOnly) {
// only operate if this is a change:
if (this.buildGlobalOnly != buildGlobalOnly) {
fragmentsNeedUpdating = true; // indicate that the fragments have changed
this.buildGlobalOnly = buildGlobalOnly;
} // endif
}
public boolean getBuildGlobalOnly() {
return buildGlobalOnly;
}
/** Allows access to the container holding wizard page controls */
public Composite getWizHolder() {
return wizHolder;
}
public void setWizHolder(Composite wizHolder) {
this.wizHolder = wizHolder;
}
public void setReferencedResources(final Collection refs) {
this.unhandledModelImports = refs;
}
public Collection getUnhandledModelImports() {
if(unhandledModelImports == null) {
unhandledModelImports = new HashSet();
}
return unhandledModelImports;
}
public void setMappingClassBuilderStrategy(MappingClassBuilderStrategy strategy) {
this.strategy = strategy;
}
public MappingClassBuilderStrategy getMappingClassBuilderStrategy( ) {
return this.strategy;
}
}