/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ package org.ebayopensource.turmeric.eclipse.typelibrary.ui.model; import org.apache.commons.lang.StringUtils; import org.ebayopensource.turmeric.eclipse.core.ICommand; import org.ebayopensource.turmeric.eclipse.core.model.typelibrary.TypeParamModel; import org.ebayopensource.turmeric.eclipse.exception.core.CommandFailedException; import org.ebayopensource.turmeric.eclipse.typelibrary.template.CommonXSDProcessorParam; import org.ebayopensource.turmeric.eclipse.typelibrary.ui.TypeLibraryUIActivator; import org.ebayopensource.turmeric.eclipse.ui.model.typelib.EnumTypeParamModel; import org.ebayopensource.turmeric.eclipse.ui.wizards.pages.typelib.EnumTypeWizardDetailsPage; import org.ebayopensource.turmeric.eclipse.utils.plugin.ProgressUtil; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.xsd.XSDEnumerationFacet; import org.eclipse.xsd.XSDFactory; import org.eclipse.xsd.XSDSimpleTypeDefinition; import org.eclipse.xsd.XSDTypeDefinition; import org.eclipse.xsd.util.XSDSchemaBuildingTools; /** * The Class EnumTypeProcessor. * * @author smathew * * * performs Enum Specific processing: Add enum values, Add enum doc */ public class EnumTypeProcessor implements ICommand { /** * {@inheritDoc} */ @Override public boolean execute(Object object, IProgressMonitor monitor) throws CommandFailedException { CommonXSDProcessorParam processorInput = (CommonXSDProcessorParam) object; XSDTypeDefinition typeDefinition = processorInput .getOutPutSchema().getTypeDefinitions().get(0); TypeParamModel typeParamModel = processorInput.getInputTypeParamModel(); if (!(typeParamModel instanceof EnumTypeParamModel) || !(typeDefinition instanceof XSDSimpleTypeDefinition)) throw new CommandFailedException( "Input param or the template is bad"); XSDSimpleTypeDefinition simpleType = (XSDSimpleTypeDefinition) typeDefinition; EnumTypeParamModel enumParamModel = (EnumTypeParamModel) typeParamModel; XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory(); ProgressUtil.progressOneStep(monitor); for (EnumTypeWizardDetailsPage.EnumTableModel enumRow : enumParamModel .getEnumTableModel()) { XSDEnumerationFacet enumerationFacet = factory .createXSDEnumerationFacet(); enumerationFacet.setLexicalValue(StringUtils.defaultString(enumRow .getEnumValue())); simpleType.getFacetContents().add(enumerationFacet); TypeLibraryUIActivator.addDocumentation(enumerationFacet, StringUtils .defaultString(enumRow.getEnumDesc())); simpleType.getFacetContents().add(enumerationFacet); ProgressUtil.progressOneStep(monitor, 3); } return false; } }