From 0d04a83f49d0e5568023344f7c5a2a0c15d866b4 Mon Sep 17 00:00:00 2001 From: wyan Date: Thu, 19 Jun 2014 16:35:27 -0700 Subject: [PATCH] change namespaceId from int to String so BIRT can support dynamic number of namespaces --- .../model/metadata/MetadataTestUtil.java | 2 +- .../model/core/DesignElementCloneTest.java | 2 +- .../model/metadata/ElementDefnTest.java | 4 +- .../report/model/writer/DocumentUtilTest.java | 3 +- .../eclipse/birt/doc/romdoc/DocElement.java | 5 +- .../model/api/metadata/MetaDataConstants.java | 2 +- .../model/api/util/ElementExporterImpl.java | 8 +- .../report/model/command/NameCommand.java | 4 +- .../report/model/command/NameSpaceRecord.java | 4 +- .../command/RenameInNameSpaceRecord.java | 2 +- .../birt/report/model/core/ModuleImpl.java | 29 ++- .../birt/report/model/core/NameSpace.java | 10 + .../namespace/AbstractModuleNameContext.java | 8 +- .../core/namespace/AbstractNameHelper.java | 93 +++++----- .../model/core/namespace/CubeNameContext.java | 10 +- .../core/namespace/DimensionNameContext.java | 2 +- .../core/namespace/DimensionNameHelper.java | 34 +--- .../core/namespace/DummyNameContext.java | 4 +- .../core/namespace/ElementNameContext.java | 2 +- .../namespace/GeneralModuleNameContext.java | 2 +- .../model/core/namespace/INameContext.java | 2 +- .../model/core/namespace/INameHelper.java | 18 +- .../core/namespace/ModuleNameHelper.java | 88 +++------ .../namespace/NameContextFactoryImpl.java | 136 +++++++------- .../core/namespace/NameExecutorImpl.java | 8 +- .../report/model/elements/olap/Dimension.java | 7 +- .../model/elements/olap/TabularCube.java | 2 +- .../report/model/metadata/ElementDefn.java | 6 +- .../report/model/metadata/NameConfig.java | 172 +++++++++--------- .../model/metadata/NameSpaceFactoryImpl.java | 2 +- .../model/parser/ReportElementState.java | 2 +- 31 files changed, 305 insertions(+), 368 deletions(-) diff --git a/model/org.eclipse.birt.report.model.testhelper/test/org/eclipse/birt/report/model/metadata/MetadataTestUtil.java b/model/org.eclipse.birt.report.model.testhelper/test/org/eclipse/birt/report/model/metadata/MetadataTestUtil.java index ef86b4eca62..d4d2d526a3e 100644 --- a/model/org.eclipse.birt.report.model.testhelper/test/org/eclipse/birt/report/model/metadata/MetadataTestUtil.java +++ b/model/org.eclipse.birt.report.model.testhelper/test/org/eclipse/birt/report/model/metadata/MetadataTestUtil.java @@ -243,7 +243,7 @@ public static void setNameOption( ElementDefn element, int option ) * @param element * @param id */ - public static void setNameSpaceID( ElementDefn element, int id ) + public static void setNameSpaceID( ElementDefn element, String id ) { if ( element != null ) element.setNameSpaceID( id ); diff --git a/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/core/DesignElementCloneTest.java b/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/core/DesignElementCloneTest.java index fbd25327f1d..2a43d02252f 100644 --- a/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/core/DesignElementCloneTest.java +++ b/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/core/DesignElementCloneTest.java @@ -536,7 +536,7 @@ private void testID( Module module, Module clonedModule, long id, * the element type name of the element */ - private void testNameSpace( Module module, Module clonedModule, int id, + private void testNameSpace( Module module, Module clonedModule, String id, String name, String elementName ) { assert module != null; diff --git a/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/metadata/ElementDefnTest.java b/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/metadata/ElementDefnTest.java index 08d7e799f9b..ad8b3263f5e 100644 --- a/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/metadata/ElementDefnTest.java +++ b/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/metadata/ElementDefnTest.java @@ -61,7 +61,7 @@ public void testGetterAndSetter( ) MetadataTestUtil.setHasStyle( def, true ); MetadataTestUtil.setName( def, "Name" ); //$NON-NLS-1$ MetadataTestUtil.setNameOption( def, 2 ); - MetadataTestUtil.setNameSpaceID( def, 4 ); + MetadataTestUtil.setNameSpaceID( def, "4" ); assertEquals( false, def.isAbstract( ) ); assertEquals( true, def.allowsUserProperties( ) ); @@ -71,7 +71,7 @@ public void testGetterAndSetter( ) assertEquals( true, def.hasStyle( ) ); assertEquals( "Name", def.getName( ) ); //$NON-NLS-1$ assertEquals( 2, def.getNameOption( ) ); - assertEquals( 4, def.getNameSpaceID( ) ); + assertEquals( "4", def.getNameSpaceID( ) ); } diff --git a/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/writer/DocumentUtilTest.java b/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/writer/DocumentUtilTest.java index 7b1c05cc738..3d0c650281c 100644 --- a/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/writer/DocumentUtilTest.java +++ b/model/org.eclipse.birt.report.model.tests/test/org/eclipse/birt/report/model/writer/DocumentUtilTest.java @@ -29,6 +29,7 @@ import org.eclipse.birt.report.model.api.css.CssStyleSheetHandle; import org.eclipse.birt.report.model.api.util.DocumentUtil; import org.eclipse.birt.report.model.core.DesignElement; +import org.eclipse.birt.report.model.core.Module; import org.eclipse.birt.report.model.elements.ExtendedItem; import org.eclipse.birt.report.model.elements.interfaces.IReportDesignModel; import org.eclipse.birt.report.model.util.BaseTestCase; @@ -328,7 +329,7 @@ public void testSerializeExternalSelectors( ) throws Exception // design DesignElement localizedStyle = design.getNameHelper( ).getNameSpace( - IReportDesignModel.STYLE_SLOT ).getElement( "table-footer" ); //$NON-NLS-1$ + Module.STYLE_NAME_SPACE ).getElement( "table-footer" ); //$NON-NLS-1$ assertNotNull( localizedStyle ); assertTrue( compareFile( "DocumentUtilTest_external_selectors_golden.xml" ) ); //$NON-NLS-1$ diff --git a/model/org.eclipse.birt.report.model/romdoc/src/org/eclipse/birt/doc/romdoc/DocElement.java b/model/org.eclipse.birt.report.model/romdoc/src/org/eclipse/birt/doc/romdoc/DocElement.java index ca9626267b7..f4a154eb896 100644 --- a/model/org.eclipse.birt.report.model/romdoc/src/org/eclipse/birt/doc/romdoc/DocElement.java +++ b/model/org.eclipse.birt.report.model/romdoc/src/org/eclipse/birt/doc/romdoc/DocElement.java @@ -104,6 +104,9 @@ public String getAbstract( ) public String getNameSpace( ) { + return getElementDefn().getNameSpaceID( ); + + /* switch ( getElementDefn( ).getNameSpaceID( ) ) { case Module.STYLE_NAME_SPACE: @@ -120,7 +123,7 @@ public String getNameSpace( ) return "Pages"; default: return "None"; - } + }*/ } public String getNameRequirement( ) diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/api/metadata/MetaDataConstants.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/api/metadata/MetaDataConstants.java index f62abed7f90..75687b06c28 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/api/metadata/MetaDataConstants.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/api/metadata/MetaDataConstants.java @@ -39,7 +39,7 @@ public interface MetaDataConstants * Code for an element that does not appear in any name space. */ - public static final int NO_NAME_SPACE = -1; + public static final String NO_NAME_SPACE = "NONE"; /** * Code for an element that does not take a name. diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/api/util/ElementExporterImpl.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/api/util/ElementExporterImpl.java index 6b2e2f1acb2..55ef193121e 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/api/util/ElementExporterImpl.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/api/util/ElementExporterImpl.java @@ -419,7 +419,7 @@ protected final boolean dropDuplicatedElement( DesignElement element ) { AbstractNameHelper nameHelper = (AbstractNameHelper) executor .getNameHelper( ); - int namespaceId = executor.getNameSpaceId( ); + String namespaceId = executor.getNameSpaceId( ); NameSpace nameSpace = nameHelper .getCachedNameSpace( namespaceId ); duplicateElement = nameSpace.getElement( element.getName( ) ); @@ -488,9 +488,9 @@ static DesignElement getDropTarget( DesignElement element ) if ( element == null ) return null; - int nameSpaceID = ( (ElementDefn) element.getDefn( ) ).getNameSpaceID( ); - if ( !( nameSpaceID == Module.CUBE_NAME_SPACE - || nameSpaceID == Module.DIMENSION_NAME_SPACE || nameSpaceID == Module.ELEMENT_NAME_SPACE ) ) + String nameSpaceID = ( (ElementDefn) element.getDefn( ) ).getNameSpaceID( ); + if ( !( Module.CUBE_NAME_SPACE.equals( nameSpaceID ) + || Module.DIMENSION_NAME_SPACE.equals( nameSpaceID ) || Module.ELEMENT_NAME_SPACE.equals( nameSpaceID ) ) ) return element; DesignElement container = element.getContainer( ); diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/NameCommand.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/NameCommand.java index d051f3c6bca..fe691ae35de 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/NameCommand.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/NameCommand.java @@ -346,7 +346,7 @@ private void dropSymbol( ) INameHelper nameHelper = executor.getNameHelper( ); if ( nameHelper != null ) { - int ns = executor.getNameSpaceId( ); + String ns = executor.getNameSpaceId( ); NameSpace namespace = executor.getNameSpace( ); if ( namespace.getElement( element.getName( ) ) != element ) return; @@ -422,7 +422,7 @@ public void checkDimension( ) throws SemanticException element ); INameHelper nameHelper = nameExecutor.getNameHelper( ); NameSpace namespace = nameExecutor.getNameSpace( ); - int namespaceId = nameExecutor.getNameSpaceId( ); + String namespaceId = nameExecutor.getNameSpaceId( ); DesignElement existedElement = namespace.getElement( name ); if ( existedElement == null ) { diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/NameSpaceRecord.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/NameSpaceRecord.java index 614ffdded58..cee9295bd8c 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/NameSpaceRecord.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/NameSpaceRecord.java @@ -58,7 +58,7 @@ public class NameSpaceRecord extends SimpleRecord * The name space to use. */ - protected int nameSpaceID = 0; + protected String nameSpaceID = null; /** * Whether to add or remove the element. @@ -78,7 +78,7 @@ public class NameSpaceRecord extends SimpleRecord * whether to add (true) or remove (false) the element. */ - public NameSpaceRecord( INameHelper nameHelper, int ns, + public NameSpaceRecord( INameHelper nameHelper, String ns, DesignElement symbol, boolean isAdd ) { this.nameHelper = nameHelper; diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/RenameInNameSpaceRecord.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/RenameInNameSpaceRecord.java index de78afc64e7..e9deea7d072 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/RenameInNameSpaceRecord.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/command/RenameInNameSpaceRecord.java @@ -30,7 +30,7 @@ class RenameInNameSpaceRecord extends SimpleRecord private DesignElement element = null; private String oldName = null; private String newName = null; - private int nameSpaceID; + private String nameSpaceID; private INameHelper nameHelper = null; /** diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/ModuleImpl.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/ModuleImpl.java index 365ccb9b9d9..a52dd227374 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/ModuleImpl.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/ModuleImpl.java @@ -117,63 +117,58 @@ public abstract class ModuleImpl extends DesignElement /** * Identifier for the shared style name space. */ - public static final int STYLE_NAME_SPACE = 0; + public static final String STYLE_NAME_SPACE = "style"; /** * Identifier of the name space that stores layout elements that appear in * the Body slot. */ - public static final int ELEMENT_NAME_SPACE = 1; + public static final String ELEMENT_NAME_SPACE = "element"; /** * Identifier for the parameter name space. */ - public static final int PARAMETER_NAME_SPACE = 2; + public static final String PARAMETER_NAME_SPACE = "parameter"; /** * Identifier for the data source name space. */ - public static final int DATA_SOURCE_NAME_SPACE = 3; + public static final String DATA_SOURCE_NAME_SPACE = "datasource"; /** * Identifier for the data set name space. */ - public static final int DATA_SET_NAME_SPACE = 4; + public static final String DATA_SET_NAME_SPACE = "dataset"; /** * Identifier for the master page name space. */ - public static final int PAGE_NAME_SPACE = 5; + public static final String PAGE_NAME_SPACE = "page"; /** * Identifier for the theme name space. */ - public static final int THEME_NAME_SPACE = 6; + public static final String THEME_NAME_SPACE = "theme"; /** * Identifier for the template parameter definition name space. */ - public static final int TEMPLATE_PARAMETER_NAME_SPACE = 7; + public static final String TEMPLATE_PARAMETER_NAME_SPACE = "template"; /** * Identifier for the cube element name space. */ - public static final int CUBE_NAME_SPACE = 8; + public static final String CUBE_NAME_SPACE = "cube"; /** * Identifier for the variable element name space. */ - public static final int VARIABLE_ELEMENT_NAME_SPACE = 9; + public static final String VARIABLE_ELEMENT_NAME_SPACE = "variable"; /** * Identifier for the dimension element name space. */ - public static final int DIMENSION_NAME_SPACE = 10; - - /** - * Number of defined name spaces. - */ - public static int NAME_SPACE_COUNT = 11; + public static final String DIMENSION_NAME_SPACE = "dimension"; /** * The session that owns this module. @@ -1249,7 +1244,7 @@ public final DesignElement resolveElement( DesignElement focus, */ protected final DesignElement resolveNativeElement( String elementName, - int nameSpace ) + String nameSpace ) { NameSpace namespace = nameHelper.getNameSpace( nameSpace ); return namespace.getElement( elementName ); diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/NameSpace.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/NameSpace.java index 2ed82a6b3be..3bc1bd5e367 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/NameSpace.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/NameSpace.java @@ -71,6 +71,11 @@ public void insert( DesignElement element ) names.put( element.getName( ), element ); } + public void insert( String name, DesignElement element ) + { + names.put( name, element ); + } + /** * Removes an element from the name space. The caller must have validated * that the element is in the name space. @@ -86,6 +91,11 @@ public void remove( DesignElement element ) names.remove( element.getName( ) ); } + public void remove( String name ) + { + names.remove( name ); + } + /** * Renames an element in the name space. Rename is done in the context of a * command: it represents a temporary period in which the model is diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/AbstractModuleNameContext.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/AbstractModuleNameContext.java index c6702c768f4..b2d984acd3d 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/AbstractModuleNameContext.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/AbstractModuleNameContext.java @@ -24,7 +24,7 @@ public abstract class AbstractModuleNameContext extends AbstractNameContext protected Module module = null; - protected int nameSpaceID = -1; + protected String nameSpaceID = null; /** * Constructs the name space with module and name space ID. @@ -34,14 +34,14 @@ public abstract class AbstractModuleNameContext extends AbstractNameContext * @param nameSpaceID */ - public AbstractModuleNameContext( Module module, int nameSpaceID ) + public AbstractModuleNameContext( Module module, String nameSpaceID ) { super( ); this.module = module; this.nameSpaceID = nameSpaceID; // name of the parameter is case insensitive - if ( nameSpaceID == Module.PARAMETER_NAME_SPACE ) + if ( Module.PARAMETER_NAME_SPACE.equals( nameSpaceID ) ) this.namespace = new CaseInsensitiveNameSpace( ); } @@ -63,7 +63,7 @@ public DesignElement getElement( ) * org.eclipse.birt.report.model.core.namespace.INameContext#getNameSpaceID * () */ - public int getNameSpaceID( ) + public String getNameSpaceID( ) { return nameSpaceID; } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/AbstractNameHelper.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/AbstractNameHelper.java index f96f5cb3cac..5d27f03b1f3 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/AbstractNameHelper.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/AbstractNameHelper.java @@ -11,6 +11,7 @@ package org.eclipse.birt.report.model.core.namespace; +import java.util.HashMap; import java.util.List; import org.eclipse.birt.report.model.api.core.IAccessControl; @@ -19,6 +20,7 @@ import org.eclipse.birt.report.model.api.metadata.IPropertyType; import org.eclipse.birt.report.model.api.metadata.MetaDataConstants; import org.eclipse.birt.report.model.api.util.StringUtil; +import org.eclipse.birt.report.model.core.CaseInsensitiveNameSpace; import org.eclipse.birt.report.model.core.DesignElement; import org.eclipse.birt.report.model.core.Module; import org.eclipse.birt.report.model.core.NameSpace; @@ -42,7 +44,7 @@ abstract public class AbstractNameHelper implements INameHelper, IAccessControl * The array of the name contexts. */ - protected INameContext nameContexts[] = null; + private HashMap nameContexts; /** * The array of name spaces to cache some element names. The meanings of @@ -51,39 +53,17 @@ abstract public class AbstractNameHelper implements INameHelper, IAccessControl * MetaDataConstants}. */ - protected NameSpace cachedNameSpaces[] = null; + private HashMap cachedNameSpaces; /** * */ public AbstractNameHelper( ) { - // init cached name spaces - initCachedNameSpaces( ); + cachedNameSpaces = new HashMap( ); + nameContexts = new HashMap( ); } - /** - * - */ - protected void initCachedNameSpaces( ) - { - cachedNameSpaces = new NameSpace[getNameSpaceCount( )]; - for ( int i = 0; i < getNameSpaceCount( ); i++ ) - { - cachedNameSpaces[i] = new NameSpace( ); - } - } - - /** - * Initializes all the name context and name manager of this helper. - */ - abstract protected void initialize( ); - - /** - * - * @return count of all the name space - */ - protected abstract int getNameSpaceCount( ); /** * Gets the name context with the given id. @@ -91,12 +71,18 @@ protected void initCachedNameSpaces( ) * @param nameSpaceID * @return the name context for specified id */ - public INameContext getNameContext( int nameSpaceID ) + public INameContext getNameContext( String nameSpaceID ) { - if ( nameSpaceID >= 0 && nameSpaceID < getNameSpaceCount( ) ) - return this.nameContexts[nameSpaceID]; - return new DummyNameContext( ); + INameContext nameContext = nameContexts.get( nameSpaceID ); + if ( nameContext == null ) + { + nameContext = createNameContext(nameSpaceID); + nameContexts.put( nameSpaceID, nameContext ); + } + return nameContext; } + + abstract protected INameContext createNameContext(String namespace); /* * (non-Javadoc) @@ -106,7 +92,7 @@ public INameContext getNameContext( int nameSpaceID ) public void clear( ) { - initCachedNameSpaces( ); + cachedNameSpaces.clear( ); } /** @@ -117,13 +103,28 @@ public void clear( ) * @return the cached namespace with the given id */ - public NameSpace getCachedNameSpace( int id ) + public NameSpace getCachedNameSpace( String id ) + { + NameSpace namespace = cachedNameSpaces.get( id); + if ( namespace == null ) + { + namespace = createNameSpace(id); + cachedNameSpaces.put( id, namespace ); + } + return namespace; + } + + protected NameSpace createNameSpace( String id ) { - assert id >= 0 && id < getNameSpaceCount( ); - return cachedNameSpaces[id]; + // now name of the parameter and style is case-insensitive + if ( Module.STYLE_NAME_SPACE.equals( id ) + || Module.PARAMETER_NAME_SPACE.equals( id ) ) + return new CaseInsensitiveNameSpace( ); + else + return new NameSpace( ); } - public final void dropElement( int namespaceId, DesignElement element ) + public final void dropElement( String namespaceId, DesignElement element ) { if ( element == null ) return; @@ -144,17 +145,17 @@ public final void dropElement( int namespaceId, DesignElement element ) * org.eclipse.birt.report.model.core.namespace.INameHelper#getNameSpace * (int) */ - public NameSpace getNameSpace( int nameSpaceID ) + public NameSpace getNameSpace( String nameSpaceID ) { return getNameContext( nameSpaceID ).getNameSpace( ); } - public void makeUniqueName( int namespaceId, DesignElement element ) + public void makeUniqueName( String namespaceId, DesignElement element ) { this.makeUniqueName( namespaceId, element, null ); } - public void makeUniqueName( int namespaceId, DesignElement element, String prefix ) + public void makeUniqueName( String namespaceId, DesignElement element, String prefix ) { if ( element == null ) return; @@ -212,7 +213,7 @@ public ElementRefValue resolve( DesignElement focus, String elementName, // definition type, then just call find and return if ( getElement( ).getDefn( ).isKindOf( nameContainerDefn ) ) { - int id = targetDefn.getNameSpaceID( ); + String id = targetDefn.getNameSpaceID( ); return getNameContext( id ).resolve( focus, elementName, propDefn, (ElementDefn) elementDefn ); } @@ -279,7 +280,7 @@ public ElementRefValue resolve( DesignElement focus, DesignElement element, // definition type, then just call find and return if ( getElement( ).getDefn( ).isKindOf( nameContainerDefn ) ) { - int id = targetDefn.getNameSpaceID( ); + String id = targetDefn.getNameSpaceID( ); return getNameContext( id ).resolve( focus, element, propDefn, (ElementDefn) elementDefn ); } @@ -303,7 +304,7 @@ public ElementRefValue resolve( DesignElement focus, DesignElement element, * org.eclipse.birt.report.model.core.namespace.INameHelper#canContain(int, * java.lang.String) */ - public boolean canContain( int nameSpaceID, String elementName ) + public boolean canContain( String nameSpaceID, String elementName ) { return getNameContext( nameSpaceID ).canContain( elementName ); } @@ -315,7 +316,7 @@ public boolean canContain( int nameSpaceID, String elementName ) * org.eclipse.birt.report.model.core.namespace.INameHelper#getElements(int, * int) */ - public List getElements( int nameSpaceID, int level ) + public List getElements( String nameSpaceID, int level ) { return getNameContext( nameSpaceID ).getElements( level ); } @@ -442,7 +443,7 @@ private ElementRefValue resolveName( DesignElement focus, // if root infor is found, then do the resolve if ( rootInfor != null ) { - int id = rootInfor.elementDefn.getNameSpaceID( ); + String id = rootInfor.elementDefn.getNameSpaceID( ); AbstractNameHelper nameHelper = (AbstractNameHelper) root .getNameHelper( ); ElementRefValue refValue = nameHelper.getNameContext( id ) @@ -531,7 +532,7 @@ private static class NameResolveInfor } } - public String getUniqueName( int namespaceId, DesignElement element, + public String getUniqueName( String namespaceId, DesignElement element, String namePrefix ) { if ( element == null ) @@ -561,7 +562,7 @@ && getElement( ).getRoot( ) instanceof ReportDesign ) // If the element already has a unique name, return it. NameSpace nameSpace = getCachedNameSpace( namespaceId ); - NameSpace moduleNameSpace = nameContexts[namespaceId].getNameSpace( ); + NameSpace moduleNameSpace = getNameContext(namespaceId).getNameSpace( ); if ( name != null && isValidInNameSpace( nameSpace, element, name ) && isValidInNameSpace( moduleNameSpace, element, name ) ) return name; @@ -595,7 +596,7 @@ && isValidInNameSpace( moduleNameSpace, element, name ) ) * org.eclipse.birt.report.model.core.namespace.INameHelper#getUniqueName * (org.eclipse.birt.report.model.core.DesignElement) */ - public final String getUniqueName( int namespaceId, DesignElement element ) + public final String getUniqueName( String namespaceId, DesignElement element ) { return getUniqueName( namespaceId, element, null ); } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/CubeNameContext.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/CubeNameContext.java index f63ac59b05e..acd05233ecb 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/CubeNameContext.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/CubeNameContext.java @@ -53,7 +53,7 @@ public class CubeNameContext extends GeneralModuleNameContext * the name space ID */ - CubeNameContext( Module module, int nameSpaceID ) + CubeNameContext( Module module, String nameSpaceID ) { super( module, nameSpaceID ); } @@ -78,9 +78,9 @@ public ElementRefValue resolve( DesignElement focus, DesignElement element, return super.resolve( focus, element, propDefn, elementDefn ); // dimension to shared dimension case - int nameSpaceID = targetDefn.getNameSpaceID( ); + String nameSpaceID = targetDefn.getNameSpaceID( ); - if ( nameSpaceID == Module.DIMENSION_NAME_SPACE ) + if ( Module.DIMENSION_NAME_SPACE.equals( nameSpaceID) ) { if ( focus instanceof Dimension ) return super.resolve( focus, element, propDefn, elementDefn ); @@ -178,9 +178,9 @@ public ElementRefValue resolve( DesignElement focus, String elementName, return super.resolve( focus, elementName, propDefn, elementDefn ); // dimension to shared dimension case - int nameSpaceID = targetDefn.getNameSpaceID( ); + String nameSpaceID = targetDefn.getNameSpaceID( ); - if ( nameSpaceID == Module.DIMENSION_NAME_SPACE ) + if ( Module.DIMENSION_NAME_SPACE.equals( nameSpaceID ) ) { if ( focus instanceof Dimension ) return super diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DimensionNameContext.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DimensionNameContext.java index ab275d671f7..9d062d5ea17 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DimensionNameContext.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DimensionNameContext.java @@ -50,7 +50,7 @@ public DesignElement getElement( ) * org.eclipse.birt.report.model.core.namespace.INameContext#getNameSpaceID * () */ - public int getNameSpaceID( ) + public String getNameSpaceID( ) { return Dimension.LEVEL_NAME_SPACE; } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DimensionNameHelper.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DimensionNameHelper.java index 2be01920e57..d003f6fa6b1 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DimensionNameHelper.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DimensionNameHelper.java @@ -32,36 +32,12 @@ public DimensionNameHelper( Dimension dimension ) { super( ); this.dimension = dimension; - initialize( ); } - /* - * (non-Javadoc) - * - * @seeorg.eclipse.birt.report.model.core.namespace.AbstractNameHelper# - * getNameSpaceCount() - */ - protected int getNameSpaceCount( ) - { - return Dimension.NAME_SPACE_COUNT; - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.birt.report.model.core.namespace.AbstractNameHelper#initialize - * () - */ - protected void initialize( ) + protected INameContext createNameContext( String name ) { - int count = getNameSpaceCount( ); - nameContexts = new INameContext[count]; - for ( int i = 0; i < count; i++ ) - { - nameContexts[i] = NameContextFactory.createDimensionNameContext( - dimension, i ); - } + return NameContextFactory.createDimensionNameContext( dimension, + Dimension.LEVEL_NAME_SPACE ); } /** @@ -77,7 +53,7 @@ public void addElement( DesignElement element ) if ( !dimension.getDefn( ).isKindOf( defn.getNameConfig( ).getNameContainer( ) ) ) return; - int id = defn.getNameSpaceID( ); + String id = defn.getNameSpaceID( ); NameSpace ns = getCachedNameSpace( id ); if ( !ns.contains( element.getName( ) ) ) ns.insert( element ); @@ -90,7 +66,7 @@ public void addElement( DesignElement element ) * org.eclipse.birt.report.model.core.namespace.INameHelper#addContentName * (int, java.lang.String) */ - public void addContentName( int id, String name ) + public void addContentName( String id, String name ) { // do nothing } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DummyNameContext.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DummyNameContext.java index 37c1b19e4c8..7f04feb1f08 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DummyNameContext.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/DummyNameContext.java @@ -108,9 +108,9 @@ public DesignElement getElement( ) return null; } - public int getNameSpaceID( ) + public String getNameSpaceID( ) { - return -1; + return ""; } } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/ElementNameContext.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/ElementNameContext.java index b85a38d91b5..18a5a72645c 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/ElementNameContext.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/ElementNameContext.java @@ -60,7 +60,7 @@ public List getElements( int level ) { elements .addAll( ( (AbstractNameHelper) parent.getNameHelper( ) ) - .getNameContext( 0 ).getElements( newLevel ) ); + .getNameContext( Module.ELEMENT_NAME_SPACE ).getElements( newLevel ) ); } } return Collections.unmodifiableList( elements ); diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/GeneralModuleNameContext.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/GeneralModuleNameContext.java index cb4d12ea17c..ae73291938f 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/GeneralModuleNameContext.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/GeneralModuleNameContext.java @@ -39,7 +39,7 @@ public class GeneralModuleNameContext extends AbstractModuleNameContext * @param module * @param nameSpaceID */ - public GeneralModuleNameContext( Module module, int nameSpaceID ) + public GeneralModuleNameContext( Module module, String nameSpaceID ) { super( module, nameSpaceID ); } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/INameContext.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/INameContext.java index 509673cb9f7..bec16e72c63 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/INameContext.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/INameContext.java @@ -126,5 +126,5 @@ public DesignElement findElement( String elementName, * * @return the name space id */ - public int getNameSpaceID( ); + public String getNameSpaceID( ); } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/INameHelper.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/INameHelper.java index 1ba19c4b596..b7ede106832 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/INameHelper.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/INameHelper.java @@ -55,7 +55,7 @@ public interface INameHelper * @return unique name of element. * */ - public String getUniqueName( int namespaceId, DesignElement element ); + public String getUniqueName( String namespaceId, DesignElement element ); /** * @@ -84,9 +84,9 @@ public interface INameHelper * @return unique name of element. * */ - public String getUniqueName( int namespaceId, DesignElement element, String namePrefix ); + public String getUniqueName( String namespaceId, DesignElement element, String namePrefix ); - public void makeUniqueName( int namespaceId, DesignElement element ); + public void makeUniqueName( String namespaceId, DesignElement element ); /** * make the unique name of element with the given name prefix @@ -98,7 +98,7 @@ public interface INameHelper * @param prefix * the name prefix */ - public void makeUniqueName( int namespaceId, DesignElement element, String prefix ); + public void makeUniqueName( String namespaceId, DesignElement element, String prefix ); /** * remove a element from cached namespace @@ -106,7 +106,7 @@ public interface INameHelper * @param namespace * @param element */ - public void dropElement( int namespaceId, DesignElement element ); + public void dropElement( String namespaceId, DesignElement element ); /** * Adds a content name to this help. Generally, this content is not @@ -116,7 +116,7 @@ public interface INameHelper * @param id * @param name */ - public void addContentName( int namespaceId, String name ); + public void addContentName( String namespaceId, String name ); /** * Gets the holder element of this name helper. @@ -132,7 +132,7 @@ public interface INameHelper * * @return the namespce instance with the specified id */ - public NameSpace getNameSpace( int nameSpaceID ); + public NameSpace getNameSpace( String nameSpaceID ); /** * Resolves the given element name to element reference value. @@ -190,7 +190,7 @@ public ElementRefValue resolve( DesignElement focus, DesignElement element, * @return all element in this namespace. */ - public List getElements( int nameSpaceID, int level ); + public List getElements( String nameSpaceID, int level ); /** * Checks whether the given element name is acceptable in this module name @@ -203,7 +203,7 @@ public ElementRefValue resolve( DesignElement focus, DesignElement element, * @return true if the given element is accepted, otherwise, return false. */ - public boolean canContain( int nameSpaceID, String elementName ); + public boolean canContain( String nameSpaceID, String elementName ); /** * Caches values for elements with names such as styles, etc. diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/ModuleNameHelper.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/ModuleNameHelper.java index 1639d8a6e4a..ddd8533b437 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/ModuleNameHelper.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/ModuleNameHelper.java @@ -11,28 +11,23 @@ package org.eclipse.birt.report.model.core.namespace; -import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; -import org.eclipse.birt.report.model.api.GroupHandle; -import org.eclipse.birt.report.model.api.ListingHandle; import org.eclipse.birt.report.model.api.extension.IMessages; import org.eclipse.birt.report.model.api.extension.IReportItemFactory; import org.eclipse.birt.report.model.api.metadata.MetaDataConstants; import org.eclipse.birt.report.model.api.util.StringUtil; -import org.eclipse.birt.report.model.api.validators.GroupNameValidator; -import org.eclipse.birt.report.model.core.CaseInsensitiveNameSpace; import org.eclipse.birt.report.model.core.DesignElement; import org.eclipse.birt.report.model.core.Module; import org.eclipse.birt.report.model.core.NameSpace; import org.eclipse.birt.report.model.core.StyleElement; import org.eclipse.birt.report.model.elements.ExtendedItem; -import org.eclipse.birt.report.model.elements.GroupElement; import org.eclipse.birt.report.model.elements.Library; import org.eclipse.birt.report.model.elements.ReportDesign; -import org.eclipse.birt.report.model.elements.interfaces.IGroupElementModel; import org.eclipse.birt.report.model.elements.olap.Level; import org.eclipse.birt.report.model.i18n.MessageConstants; import org.eclipse.birt.report.model.i18n.ModelMessages; @@ -55,7 +50,7 @@ public class ModuleNameHelper extends AbstractNameHelper * used again to avoid the duplicate. This may be used when some extensions * is not well-parsed or other reasons. */ - private List cachedContentNames[]; + private HashMap> cachedContentNames; /** * This map to store all level elements for the backward compatibility after @@ -72,56 +67,13 @@ public ModuleNameHelper( Module module ) { super( ); this.module = module; - initialize( ); + cachedContentNames = new HashMap>(); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.birt.report.model.core.namespace.AbstractNameHelper#initialize - * () - */ - protected void initialize( ) + protected INameContext createNameContext(String id) { - int count = getNameSpaceCount( ); - cachedContentNames = new ArrayList[count]; - nameContexts = new INameContext[count]; - for ( int i = 0; i < count; i++ ) - { - nameContexts[i] = NameContextFactory.createModuleNameContext( - module, i ); - cachedContentNames[i] = new ArrayList( ); - } - } - - /** - * - */ - protected void initCachedNameSpaces( ) - { - cachedNameSpaces = new NameSpace[getNameSpaceCount( )]; - for ( int i = 0; i < getNameSpaceCount( ); i++ ) - { - // now name of the parameter and style is case-insensitive - if ( i == Module.STYLE_NAME_SPACE - || i == Module.PARAMETER_NAME_SPACE ) - cachedNameSpaces[i] = new CaseInsensitiveNameSpace( ); - else - cachedNameSpaces[i] = new NameSpace( ); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.birt.report.model.core.namespace.INameHelper#getNameSpaceCount - * () - */ - public int getNameSpaceCount( ) - { - return Module.NAME_SPACE_COUNT; + return + NameContextFactory.createModuleNameContext( module, id ) ; } /* @@ -131,7 +83,7 @@ public int getNameSpaceCount( ) * org.eclipse.birt.report.model.core.namespace.INameHelper#getUniqueName * (org.eclipse.birt.report.model.core.DesignElement, java.lang.String) */ - public String getUniqueName( int namespaceId, DesignElement element, String namePrefix ) + public String getUniqueName( String namespaceId, DesignElement element, String namePrefix ) { if ( element == null ) return null; @@ -165,8 +117,8 @@ public String getUniqueName( int namespaceId, DesignElement element, String name // If the element already has a unique name, return it. NameSpace nameSpace = getCachedNameSpace( namespaceId ); - List cachedContentNames = getCachedContentNames( namespaceId ); - NameSpace moduleNameSpace = nameContexts[namespaceId].getNameSpace( ); + Set cachedContentNames = getCachedContentNames( namespaceId ); + NameSpace moduleNameSpace = getNameContext( namespaceId ).getNameSpace( ); String validName = name; if ( element instanceof StyleElement ) @@ -250,12 +202,16 @@ && isValidInNameSpace( moduleNameSpace, element, validName ) * the name space id to get * @return the cached content name list with the given id */ - List getCachedContentNames( int id ) + private Set getCachedContentNames( String id ) { - assert id >= 0 && id < getNameSpaceCount( ); - return cachedContentNames[id]; + Set cachedNames = cachedContentNames.get( id ); + if ( cachedNames == null ) + { + cachedNames = new HashSet( ); + cachedContentNames.put( id, cachedNames ); + } + return cachedNames; } - /* * (non-Javadoc) @@ -264,12 +220,12 @@ List getCachedContentNames( int id ) * org.eclipse.birt.report.model.core.namespace.INameHelper#addContentName * (int, java.lang.String) */ - public void addContentName( int id, String name ) + public void addContentName( String id, String name ) { - if ( id >= 0 && id < getNameSpaceCount( ) ) + Set cachedNames = getCachedContentNames( id ); + if ( !cachedNames.contains( name ) ) { - if ( !cachedContentNames[id].contains( name ) ) - cachedContentNames[id].add( name ); + cachedNames.add( name ); } } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/NameContextFactoryImpl.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/NameContextFactoryImpl.java index 20f0b55bab2..f0497220e30 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/NameContextFactoryImpl.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/NameContextFactoryImpl.java @@ -1,69 +1,69 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 Actuate Corporation. - * 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: - * Actuate Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.birt.report.model.core.namespace; - -import org.eclipse.birt.report.model.core.Module; -import org.eclipse.birt.report.model.elements.olap.Dimension; - -/** - * - */ - -public class NameContextFactoryImpl -{ - - public NameContextFactoryImpl( ) - { - super( ); - } - - /** - * Returns the module name space with the attached module and name space ID. - * - * @param module - * the attached module - * @param nameSpaceID - * the name space ID. The different module name space for - * different name space ID. - * @return the produced element name space - */ - - public static INameContext createModuleNameContext( Module module, - int nameSpaceID ) - { - if ( nameSpaceID == Module.STYLE_NAME_SPACE ) - return new StyleNameContext( module ); - - if ( nameSpaceID == Module.CUBE_NAME_SPACE - || nameSpaceID == Module.DIMENSION_NAME_SPACE ) - return new CubeNameContext( module, nameSpaceID ); - - return new GeneralModuleNameContext( module, nameSpaceID ); - } - - /** - * Creates the dimension name context. - * - * @param dimension - * the dimension. - * @param nameSpaceID - * the name space id. - * @return the dimension name context. - */ - public static INameContext createDimensionNameContext( Dimension dimension, - int nameSpaceID ) - { - if ( nameSpaceID == Dimension.LEVEL_NAME_SPACE ) - return new DimensionNameContext( dimension ); - return null; - } +/******************************************************************************* + * Copyright (c) 2004, 2005 Actuate Corporation. + * 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: + * Actuate Corporation - initial API and implementation + *******************************************************************************/ + +package org.eclipse.birt.report.model.core.namespace; + +import org.eclipse.birt.report.model.core.Module; +import org.eclipse.birt.report.model.elements.olap.Dimension; + +/** + * + */ + +public class NameContextFactoryImpl +{ + + public NameContextFactoryImpl( ) + { + super( ); + } + + /** + * Returns the module name space with the attached module and name space ID. + * + * @param module + * the attached module + * @param nameSpaceID + * the name space ID. The different module name space for + * different name space ID. + * @return the produced element name space + */ + + public static INameContext createModuleNameContext( Module module, + String nameSpaceID ) + { + if ( nameSpaceID == Module.STYLE_NAME_SPACE ) + return new StyleNameContext( module ); + + if ( nameSpaceID == Module.CUBE_NAME_SPACE + || nameSpaceID == Module.DIMENSION_NAME_SPACE ) + return new CubeNameContext( module, nameSpaceID ); + + return new GeneralModuleNameContext( module, nameSpaceID ); + } + + /** + * Creates the dimension name context. + * + * @param dimension + * the dimension. + * @param nameSpaceID + * the name space id. + * @return the dimension name context. + */ + public static INameContext createDimensionNameContext( Dimension dimension, + String nameSpaceID ) + { + if ( Dimension.LEVEL_NAME_SPACE.equals( nameSpaceID ) ) + return new DimensionNameContext( dimension ); + return null; + } } \ No newline at end of file diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/NameExecutorImpl.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/NameExecutorImpl.java index 9f484aed04e..bea22775bf3 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/NameExecutorImpl.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/core/namespace/NameExecutorImpl.java @@ -58,7 +58,7 @@ class NameExecutorImpl protected Module module; protected INameHelper nameHelper; - protected int namespaceId; + protected String namespaceId; /** * @@ -91,7 +91,7 @@ public NameExecutorImpl( Module module, ContainerContext container, DesignEleme protected void findNameHelper( ) { nameHelper = null; - namespaceId = -1; + namespaceId = null; ElementDefn focusDefn = (ElementDefn) focus.getDefn( ); if ( focusDefn.getNameOption( ) == MetaDataConstants.NO_NAME ) @@ -239,13 +239,13 @@ public final NameSpace getNameSpace( ) return null; } - public final int getNameSpaceId( ) + public final String getNameSpaceId( ) { if ( nameHelper != null ) { return namespaceId; } - return -1; + return null; } public String getUniqueName( ) diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/elements/olap/Dimension.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/elements/olap/Dimension.java index 33ee3f91e0b..153ace9714a 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/elements/olap/Dimension.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/elements/olap/Dimension.java @@ -45,12 +45,7 @@ public abstract class Dimension extends ReferenceableElement /** * Level name space id. */ - public static final int LEVEL_NAME_SPACE = 0; - - /** - * Name space count in the dimension. - */ - public static final int NAME_SPACE_COUNT = 1; + public static final String LEVEL_NAME_SPACE = "dimension-level"; protected INameHelper nameHelper = null; diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/elements/olap/TabularCube.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/elements/olap/TabularCube.java index 0e88298ba82..11fc6e0656e 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/elements/olap/TabularCube.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/elements/olap/TabularCube.java @@ -146,7 +146,7 @@ public DesignElement findLocalElement( String name, IElementDefn type ) return null; ElementDefn targetDefn = (ElementDefn) type; - int nameSpaceID = targetDefn.getNameSpaceID( ); + String nameSpaceID = targetDefn.getNameSpaceID( ); NameSpace tmpNS = root.getNameHelper( ).getNameSpace( nameSpaceID ); DesignElement tmpSharedElement = tmpNS.getElement( name ); diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/ElementDefn.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/ElementDefn.java index ec0d2c98f7b..387d2327523 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/ElementDefn.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/ElementDefn.java @@ -1598,7 +1598,7 @@ void addStyleProperty( String propName ) * @return The name space ID. */ - public int getNameSpaceID( ) + public String getNameSpaceID( ) { return nameConfig.nameSpaceID; } @@ -1790,11 +1790,11 @@ void addSlot( SlotDefn slot ) * The name space ID. */ - void setNameSpaceID( int ns ) + void setNameSpaceID( String ns ) { assert !isBuilt; nameConfig.nameSpaceID = ns; - if ( nameConfig.nameSpaceID == MetaDataConstants.NO_NAME_SPACE ) + if ( MetaDataConstants.NO_NAME_SPACE.equals( nameConfig.nameSpaceID ) ) nameConfig.nameOption = MetaDataConstants.NO_NAME; } diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/NameConfig.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/NameConfig.java index 8bd3e5c7f99..4aa45ec5799 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/NameConfig.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/NameConfig.java @@ -1,86 +1,86 @@ -/******************************************************************************* - * Copyright (c) 2004 Actuate Corporation. - * 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: - * Actuate Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.birt.report.model.metadata; - -import org.eclipse.birt.report.model.api.metadata.IElementDefn; -import org.eclipse.birt.report.model.api.metadata.IElementPropertyDefn; -import org.eclipse.birt.report.model.api.metadata.MetaDataConstants; - -/** - * Configuration information for the name management of the element. - */ - -public class NameConfig -{ - - /** - * Indicates the name space in which instances of this element reside. - */ - - protected int nameSpaceID = MetaDataConstants.NO_NAME_SPACE; - - /** - * Definition of the element where the name resides. - */ - protected IElementDefn holder = null; - - /** - * Name option: one of following defined in MetaDataConstants: - * {@link MetaDataConstants#NO_NAME NO_NAME}, - * {@link MetaDataConstants#OPTIONAL_NAME OPTIONAL_NAME}, or - * {@link MetaDataConstants#REQUIRED_NAME REQUIRED_NAME}. - */ - - protected int nameOption = MetaDataConstants.OPTIONAL_NAME; - - protected IElementPropertyDefn targetProperty = null; - - protected String targetPropertyName = null; - - protected String configString = null; - - /** - * - */ - - NameConfig( ) - { - - } - - /** - * The ID of the name space defined by the name container. - * - * @return the name space ID - */ - public int getNameSpaceID( ) - { - return nameSpaceID; - } - - /** - * The definition of the name container. Generally, Module is - * the default name container. However, for some special case, - * Dimension> can also be the container. - * - * @return definition of the name container - */ - public IElementDefn getNameContainer( ) - { - return holder; - } - - public IElementPropertyDefn getNameProperty( ) - { - return targetProperty; - } -} +/******************************************************************************* + * Copyright (c) 2004 Actuate Corporation. + * 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: + * Actuate Corporation - initial API and implementation + *******************************************************************************/ + +package org.eclipse.birt.report.model.metadata; + +import org.eclipse.birt.report.model.api.metadata.IElementDefn; +import org.eclipse.birt.report.model.api.metadata.IElementPropertyDefn; +import org.eclipse.birt.report.model.api.metadata.MetaDataConstants; + +/** + * Configuration information for the name management of the element. + */ + +public class NameConfig +{ + + /** + * Indicates the name space in which instances of this element reside. + */ + + protected String nameSpaceID = MetaDataConstants.NO_NAME_SPACE; + + /** + * Definition of the element where the name resides. + */ + protected IElementDefn holder = null; + + /** + * Name option: one of following defined in MetaDataConstants: + * {@link MetaDataConstants#NO_NAME NO_NAME}, + * {@link MetaDataConstants#OPTIONAL_NAME OPTIONAL_NAME}, or + * {@link MetaDataConstants#REQUIRED_NAME REQUIRED_NAME}. + */ + + protected int nameOption = MetaDataConstants.OPTIONAL_NAME; + + protected IElementPropertyDefn targetProperty = null; + + protected String targetPropertyName = null; + + protected String configString = null; + + /** + * + */ + + NameConfig( ) + { + + } + + /** + * The ID of the name space defined by the name container. + * + * @return the name space ID + */ + public String getNameSpaceID( ) + { + return nameSpaceID; + } + + /** + * The definition of the name container. Generally, Module is + * the default name container. However, for some special case, + * Dimension> can also be the container. + * + * @return definition of the name container + */ + public IElementDefn getNameContainer( ) + { + return holder; + } + + public IElementPropertyDefn getNameProperty( ) + { + return targetProperty; + } +} diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/NameSpaceFactoryImpl.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/NameSpaceFactoryImpl.java index 2437f38722f..8f60300a275 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/NameSpaceFactoryImpl.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/metadata/NameSpaceFactoryImpl.java @@ -49,7 +49,7 @@ protected NameSpaceFactoryImpl( ) * @param namespaceName * @return */ - public int getNameSpaceID( String holdName, String namespaceName ) + public String getNameSpaceID( String holdName, String namespaceName ) { if ( ReportDesignConstants.DIMENSION_ELEMENT .equalsIgnoreCase( holdName ) ) diff --git a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/parser/ReportElementState.java b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/parser/ReportElementState.java index ca4ddeb9dfb..db78334051c 100644 --- a/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/parser/ReportElementState.java +++ b/model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/parser/ReportElementState.java @@ -583,7 +583,7 @@ protected void addToNamespace( DesignElement content ) if ( name != null && isManagedByNameSpace ) { NameExecutor executor = new NameExecutor( module, content ); - int namespceId = executor.getNameSpaceId( ); + String namespceId = executor.getNameSpaceId( ); NameSpace ns = executor.getNameSpace( ); DesignElement existedElement = executor.getElement( name ); if ( existedElement != null )