Java 类org.hibernate.boot.model.naming.Identifier 实例源码

项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImplTest.java   
private void mockContext(final ImplicitNameSource source) {
    final MetadataBuildingContext context = Mockito.mock(MetadataBuildingContext.class);
    final InFlightMetadataCollector collector = Mockito.mock(InFlightMetadataCollector.class);
    final Database database = Mockito.mock(Database.class);
    final JdbcEnvironment jdbcEnvironment = Mockito.mock(JdbcEnvironment.class);
    final IdentifierHelper identifierHelper = Mockito.mock(IdentifierHelper.class);
    Mockito.when(identifierHelper.toIdentifier(ArgumentMatchers.anyString())).then(new Answer<Identifier>() {

        @Override
        public Identifier answer(final InvocationOnMock invocation) {
            return DatabaseIdentifier.toIdentifier((String)invocation.getArguments()[0]) ;
        }
    });
    Mockito.when(jdbcEnvironment.getIdentifierHelper()).thenReturn(identifierHelper);
    Mockito.when(database.getJdbcEnvironment()).thenReturn(jdbcEnvironment);
    Mockito.when(collector.getDatabase()).thenReturn(database);
    Mockito.when(context.getMetadataCollector()).thenReturn(collector);
    Mockito.when(source.getBuildingContext()).thenReturn(context);
}
项目:bootstrap    文件:SequenceIdentifierGeneratorStrategyProviderTest.java   
private JdbcEnvironment newJdbcEnvironment() {

        JdbcEnvironment jdbcEnvironment = Mockito.mock(JdbcEnvironment.class);
        IdentifierHelper identifierHelper = Mockito.mock(IdentifierHelper.class);
        Mockito.when(identifierHelper.toIdentifier(ArgumentMatchers.anyString())).then(new Answer<Identifier>() {

            @Override
            public Identifier answer(InvocationOnMock invocation) {
                if (invocation.getArguments()[0] == null)
                    return null;
                return new Identifier((String) invocation.getArguments()[0], false);
            }
        });
        Mockito.when(jdbcEnvironment.getIdentifierHelper()).thenReturn(identifierHelper);
        return jdbcEnvironment;
    }
项目:robe    文件:RobeHibernateNamingStrategyTest.java   
@Test
public void namingStrategy() {
    RobeHibernateNamingStrategy strategy = new RobeHibernateNamingStrategy("V_");
    Identifier identifier = Identifier.toIdentifier("A_NAME");
    Identifier expectedIdentifier = Identifier.toIdentifier("V_A_NAME");
    Identifier expectedIdentifierColumn = Identifier.toIdentifier("A_NAME");

    Identifier none = strategy.toPhysicalTableName(null, null);
    Identifier physicalCatalogName = strategy.toPhysicalCatalogName(identifier, null);
    Identifier physicalColumnName = strategy.toPhysicalColumnName(identifier, null);
    Identifier physicalSchemaName = strategy.toPhysicalSchemaName(identifier, null);
    Identifier physicalSequenceName = strategy.toPhysicalSequenceName(identifier, null);
    Identifier physicalTableName = strategy.toPhysicalTableName(identifier, null);

    Assert.assertEquals(null, none);
    Assert.assertEquals(expectedIdentifier, physicalCatalogName);
    Assert.assertEquals(expectedIdentifierColumn, physicalColumnName);
    Assert.assertEquals(expectedIdentifier, physicalSchemaName);
    Assert.assertEquals(expectedIdentifier, physicalSequenceName);
    Assert.assertEquals(expectedIdentifier, physicalTableName);
}
项目:midpoint    文件:MidPointPhysicalNamingStrategy.java   
@Override
public Identifier toPhysicalTableName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
    String name = identifier.getText();
    if (name.startsWith("m_") || "hibernate_sequence".equals(name)) {
        return identifier;
    }

    name = name.substring(1);
    name = "m_" + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name);
    name = RUtil.fixDBSchemaObjectNameLength(name);

    Identifier i = new Identifier(name, identifier.isQuoted());

    LOGGER.trace("toPhysicalTableName {} -> {}", identifier, i);

    return i;
}
项目:shogun2    文件:PhysicalNamingStrategyShogun2.java   
/**
 * Converts a given {@link Identifier} to the lower case representation. If
 * the given context has a character limit for identifiers, this will be
 * respected.
 *
 * @param context
 *            The JDBC context
 * @param identifier
 *            The identifier
 * @param prefix
 *            Optional prefix to use for the idenifiert. Will be ignored, if
 *            null
 * @return
 */
protected Identifier convertToLimitedLowerCase(JdbcEnvironment context, Identifier identifier, String prefix) {
    String identifierText = identifier.getText();

    if(prefix != null) {
        identifierText = prefix + identifierText;
    }

    // always convert to lowercase
    identifierText = identifierText.toLowerCase();

    // determine the length limit based on the JDBC context
    Integer lengthLimit = getIdentifierLengthLimit(context);

    // limit length if necessary
    if (lengthLimit != null && identifierText.length() > lengthLimit) {
        identifierText = StringUtils.substring(identifierText, 0, lengthLimit);
    }

    return Identifier.toIdentifier(identifierText);
}
项目:midpoint    文件:MidPointPhysicalNamingStrategy.java   
@Override
public Identifier toPhysicalTableName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
    String name = identifier.getText();
    if (name.startsWith("m_") || "hibernate_sequence".equals(name)) {
        return identifier;
    }

    name = name.substring(1);
    name = "m_" + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name);
    name = RUtil.fixDBSchemaObjectNameLength(name);

    Identifier i = new Identifier(name, identifier.isQuoted());

    LOGGER.trace("toPhysicalTableName {} -> {}", identifier, i);

    return i;
}
项目:springuni-particles    文件:ImprovedPhysicalNamingStrategy.java   
private Identifier addUnderscores(Identifier name) {
  if (name == null) {
    return null;
  }
  StringBuilder builder = new StringBuilder(name.getText().replace('.', '_'));
  for (int i = 1; i < builder.length() - 1; i++) {
    if (isUnderscoreRequired(builder.charAt(i - 1), builder.charAt(i), builder.charAt(i + 1))) {
      builder.insert(i++, '_');
    }
  }
  return getIdentifier(builder.toString(), name.isQuoted());
}
项目:amanda    文件:PhysicalNamingStrategyImpl.java   
private Identifier convert(Identifier identifier) {
    if (identifier == null || StringUtils.isEmpty(identifier.getText())) {
        return identifier;
    }

    String newName = addUnderscores(identifier.getText());
    return Identifier.toIdentifier(newName);
}
项目:bootstrap    文件:PhysicalNamingStrategyLowerCase.java   
/**
 * Lower case the text, without touching the quotes.
 */
private Identifier toLowerCase(final Identifier name) {
    if (name == null) {
        return null;
    }

    // to lower case
    return new Identifier(name.getText().toLowerCase(Locale.ENGLISH), name.isQuoted());
}
项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImpl.java   
@Override
public Identifier determineJoinColumnName(final ImplicitJoinColumnNameSource source) {
    if (source.getNature() == ImplicitJoinColumnNameSource.Nature.ELEMENT_COLLECTION || source.getAttributePath() == null) {
        return source.getReferencedTableName();
    }
    return toIdentifier(transformAttributePath(source.getAttributePath()), source.getBuildingContext());
}
项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImplTest.java   
@Test
public void determineUniqueKeyName() {
    final ImplicitUniqueKeyNameSource source = Mockito.mock(ImplicitUniqueKeyNameSource.class);
    mockContext(source);
    Mockito.when(source.getTableName()).thenReturn(DatabaseIdentifier.toIdentifier("MyTa_ble"));
    final List<Identifier> columnsIdentifier = new ArrayList<>();
    columnsIdentifier.add(DatabaseIdentifier.toIdentifier("MyCol_umn1"));
    columnsIdentifier.add(DatabaseIdentifier.toIdentifier("MyCol_umn2"));
    Mockito.when(source.getColumnNames()).thenReturn(columnsIdentifier);
    final Identifier identifier = new ImplicitNamingStrategyNiceJpaImpl().determineUniqueKeyName(source);

    Assert.assertEquals("UK_bdj7f5p3skrieson5es1km8t9", identifier.getText());
}
项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImplTest.java   
@Test
public void determineAnyKeyColumnName() {
    final ImplicitAnyKeyColumnNameSource source = Mockito.mock(ImplicitAnyKeyColumnNameSource.class);
    mockContext(source);
    final AttributePath attributePath= Mockito.mock(AttributePath.class);
    Mockito.when(attributePath.getProperty()).thenReturn("myProperty");
    Mockito.when(source.getAttributePath()).thenReturn(attributePath);
    final Identifier identifier = new ImplicitNamingStrategyNiceJpaImpl().determineAnyKeyColumnName(source);
    Assert.assertEquals("my_property", identifier.getText());
}
项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImplTest.java   
@Test
public void determineJoinColumnNameCollection() {
    final ImplicitJoinColumnNameSource source = Mockito.mock(ImplicitJoinColumnNameSource.class);
    mockContext(source);
    Mockito.when(source.getNature()).thenReturn(ImplicitJoinColumnNameSource.Nature.ELEMENT_COLLECTION);
    Mockito.when(source.getReferencedTableName()).thenReturn(DatabaseIdentifier.toIdentifier("MyTa_ble"));
    final Identifier identifier = new ImplicitNamingStrategyNiceJpaImpl().determineJoinColumnName(source);
    Assert.assertEquals("MyTa_ble", identifier.getText());
}
项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImplTest.java   
@Test
public void determineJoinColumnNameNoAttribute() {
    final ImplicitJoinColumnNameSource source = Mockito.mock(ImplicitJoinColumnNameSource.class);
    mockContext(source);
    Mockito.when(source.getNature()).thenReturn(ImplicitJoinColumnNameSource.Nature.ENTITY);
    Mockito.when(source.getReferencedTableName()).thenReturn(DatabaseIdentifier.toIdentifier("MyTa_ble"));
    final Identifier identifier = new ImplicitNamingStrategyNiceJpaImpl().determineJoinColumnName(source);
    Assert.assertEquals("MyTa_ble", identifier.getText());
}
项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImplTest.java   
@Test
public void determineJoinColumnName() {
    final ImplicitJoinColumnNameSource source = Mockito.mock(ImplicitJoinColumnNameSource.class);
    mockContext(source);
    Mockito.when(source.getNature()).thenReturn(ImplicitJoinColumnNameSource.Nature.ENTITY);
    final AttributePath attributePath= Mockito.mock(AttributePath.class);
    Mockito.when(attributePath.getProperty()).thenReturn("myProperty");
    Mockito.when(source.getAttributePath()).thenReturn(attributePath);
    Mockito.when(source.getReferencedTableName()).thenReturn(DatabaseIdentifier.toIdentifier("MyTa_ble"));
    final Identifier identifier = new ImplicitNamingStrategyNiceJpaImpl().determineJoinColumnName(source);
    Assert.assertEquals("my_property", identifier.getText());
}
项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImplTest.java   
@Test
public void determineJoinTableName() {
    final ImplicitJoinTableNameSource source = Mockito.mock(ImplicitJoinTableNameSource.class);
    mockContext(source);
    final AttributePath attributePath= Mockito.mock(AttributePath.class);
    Mockito.when(attributePath.getProperty()).thenReturn("myProperty");
    Mockito.when(source.getAssociationOwningAttributePath()).thenReturn(attributePath);
    Mockito.when(source.getOwningPhysicalTableName()).thenReturn("Table1");
    final Identifier identifier = new ImplicitNamingStrategyNiceJpaImpl().determineJoinTableName(source);
    Assert.assertEquals("Table1_my_property", identifier.getText());
}
项目:bootstrap    文件:ImplicitNamingStrategyNiceJpaImplTest.java   
@Test
public void determineForeignKeyName() {
    final ImplicitForeignKeyNameSource source = Mockito.mock(ImplicitForeignKeyNameSource.class);
    mockContext(source);
    Mockito.when(source.getTableName()).thenReturn(DatabaseIdentifier.toIdentifier("MyTa_ble"));
    final List<Identifier> columnsIdentifier = new ArrayList<>();
    columnsIdentifier.add(DatabaseIdentifier.toIdentifier("MyCol_umn1"));
    columnsIdentifier.add(DatabaseIdentifier.toIdentifier("MyCol_umn2"));
    Mockito.when(source.getColumnNames()).thenReturn(columnsIdentifier);
    final Identifier identifier = new ImplicitNamingStrategyNiceJpaImpl().determineForeignKeyName(source);
    Assert.assertEquals("FK_bdj7f5p3skrieson5es1km8t9", identifier.getText());
}
项目:web-framework-for-java    文件:DatabaseImplicitNamingStrategy.java   
@Override
public Identifier determineBasicColumnName(ImplicitBasicColumnNameSource source) {

    String columnName = StringHelper.toLowerCase(
        StringHelper.insertUnderscoreBetweenWords(source.getAttributePath().getProperty())
    );

    ImplicitBasicColumnNameSource newSource = new ImplicitBasicColumnNameSource() {
        @Override
        public AttributePath getAttributePath()
        {
            return AttributePath.parse(columnName);
        }

        @Override
        public boolean isCollectionElement() {
            return source.isCollectionElement();
        }

        @Override
        public MetadataBuildingContext getBuildingContext()
        {
            return source.getBuildingContext();
        }
    };

    return super.determineBasicColumnName(newSource);
}
项目:niubi-job    文件:HibernateNamingStrategy.java   
private Identifier addUnderscores(Identifier name) {
    if (name != null) {
        return Identifier.toIdentifier(addUnderscores(abbreviateName(name.getText(), maxLength)));
    } else {
        return name;
    }
}
项目:pcm-api    文件:ImprovedNamingStrategy.java   
private Identifier convert(Identifier identifier) {
    if (identifier == null || StringUtils.isBlank(identifier.getText())) {
        return identifier;
    }

    String regex = "([a-z])([A-Z])";
    String replacement = "$1_$2";
    String newName = identifier.getText().replaceAll(regex, replacement).toLowerCase();
    return Identifier.toIdentifier(newName);
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:SpringPhysicalNamingStrategy.java   
private Identifier apply(Identifier name) {
    if (name == null) {
        return null;
    }
    StringBuilder text = new StringBuilder(name.getText().replace('.', '_'));
    for (int i = 1; i < text.length() - 1; i++) {
        if (isUnderscoreRequired(text.charAt(i - 1), text.charAt(i), text.charAt(i + 1))) {
            text.insert(i++, '_');
        }
    }
    return new Identifier(text.toString().toLowerCase(Locale.ROOT), name.isQuoted());
}
项目:gorm-hibernate5    文件:GrailsDomainBinder.java   
private String getSchemaName(InFlightMetadataCollector mappings) {
    Identifier schema = mappings.getDatabase().getDefaultNamespace().getName().getSchema();
    if(schema != null) {
        return schema.getCanonicalName();
    }
    return null;
}
项目:gorm-hibernate5    文件:GrailsDomainBinder.java   
private String getCatalogName(InFlightMetadataCollector mappings) {
    Identifier catalog = mappings.getDatabase().getDefaultNamespace().getName().getCatalog();
    if(catalog != null) {
        return catalog.getCanonicalName();
    }
    return null;
}
项目:spring-boot-concourse    文件:SpringPhysicalNamingStrategy.java   
private Identifier apply(Identifier name) {
    if (name == null) {
        return null;
    }
    StringBuilder text = new StringBuilder(name.getText().replace('.', '_'));
    for (int i = 1; i < text.length() - 1; i++) {
        if (isUnderscoreRequired(text.charAt(i - 1), text.charAt(i), text.charAt(i + 1))) {
            text.insert(i++, '_');
        }
    }
    return new Identifier(text.toString().toLowerCase(Locale.ROOT), name.isQuoted());
}
项目:owsi-core-parent    文件:PostgreSQLPhysicalNamingStrategyImpl.java   
protected Identifier truncateIdentifier(Identifier name) {
    if (name == null) {
        return name;
    }

    String text = name.getText();
    if (text == null || text.length() <= IDENTIFIER_MAX_LENGTH) {
        return name;
    } else {
        return Identifier.toIdentifier(text.substring(0, IDENTIFIER_MAX_LENGTH), name.isQuoted());
    }
}
项目:owsi-core-parent    文件:PerTableSequenceStyleGenerator.java   
@Override
protected QualifiedName determineSequenceName(Properties params, Dialect dialect, JdbcEnvironment jdbcEnv) {
    String tableName = params.getProperty(PersistentIdentifierGenerator.TABLE);
    String columnName = params.getProperty(PersistentIdentifierGenerator.PK);

    if (tableName != null && columnName != null) {
        StringBuilder sequenceNameBuilder = new StringBuilder();

        sequenceNameBuilder.append(tableName);
        sequenceNameBuilder.append(SEQUENCE_NAME_SEPARATOR);
        sequenceNameBuilder.append(columnName);
        sequenceNameBuilder.append(SEQUENCE_NAME_SEPARATOR);
        sequenceNameBuilder.append(SEQUENCE_NAME_SUFFIX);

        // todo : need to incorporate implicit catalog and schema names
        final Identifier catalog = jdbcEnv.getIdentifierHelper().toIdentifier(
                ConfigurationHelper.getString( CATALOG, params )
        );
        final Identifier schema =  jdbcEnv.getIdentifierHelper().toIdentifier(
                ConfigurationHelper.getString( SCHEMA, params )
        );
        return new QualifiedNameParser.NameParts(
                catalog,
                schema,
                jdbcEnv.getIdentifierHelper().toIdentifier( sequenceNameBuilder.toString() )
        );
    }
    throw new IllegalStateException("Unable to build the sequence name");
}
项目:cia    文件:LegacyNamingStrategy.java   
/**
* Convert.
*
* @param identifier
*            the identifier
* @return the identifier
*/
  private static Identifier convert(final Identifier identifier) {
    if (identifier == null || StringUtils.isBlank(identifier.getText())) {
          return identifier;
      } else {
        return Identifier.toIdentifier(identifier.getText().replaceAll(REG_EXPR, REPLACEMENT_PATTERN).toLowerCase(Locale.ENGLISH));
      }
  }
项目:high-performance-java-persistence    文件:OracleNamingStrategy.java   
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
    Identifier original = super.toPhysicalColumnName(name, context);
    if(original.getText().length() > 30) {
        return Identifier.toIdentifier(original.getText().substring(0, 30), original.isQuoted());
    }
    return original;
}
项目:midpoint    文件:MidPointPhysicalNamingStrategy.java   
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
    Identifier i = super.toPhysicalColumnName(name, context);

    LOGGER.trace("toPhysicalColumnName {} -> {}", name, i);

    return i;
}
项目:SimplePersistence    文件:NaturalImplicitNamingStrategy.java   
@Override
public Identifier determineJoinColumnName(final ImplicitJoinColumnNameSource source) {
    final Identifier original = super.determineJoinColumnName(source);
    final String name = original.getText();
    // TODO why do some columns already have _id on them??
    return Identifier.toIdentifier(name.endsWith("Id") || name.endsWith("_id") ? name : name + "Id", original.isQuoted());
}
项目:shogun2    文件:OracleNamingStrategyShogun2.java   
/**
 * Check if column {@link Identifier} equals reserved word. If true, add prefix to column name
 *
 * @param name    identifier to check
 * @param context JDBC env
 *
 * @return Identifier
 */
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
    // call superclass and get string value
    Identifier columnIdentifier = super.toPhysicalColumnName(name, context);
    String columnIdentifierText = columnIdentifier.getText();
    if (StringUtils.equalsAnyIgnoreCase(columnIdentifierText, RESERVED_WORDS_ORACLE)) {
        columnIdentifier = convertToLimitedLowerCase(context, columnIdentifier, columnNamePrefix);
    }

    return columnIdentifier;
}
项目:shogun2    文件:PhysicalNamingStrategyShogun2Test.java   
/**
 * @param dialect
 * @param className
 * @param expectedPhysicalTableName
 */
private void assertExpectedPhysicalTableName(Dialect dialect, String className, String expectedPhysicalTableName) {
    JdbcEnvironment context = Mockito.mock(JdbcEnvironment.class);
    when(context.getDialect()).thenReturn(dialect);

    Identifier classIdentifier = Identifier.toIdentifier(className);
    String actualPhysicalName = namingStrategy.toPhysicalTableName(classIdentifier, context).getText();

    assertEquals(expectedPhysicalTableName, actualPhysicalName);
}
项目:shogun2    文件:PhysicalNamingStrategyShogun2Test.java   
/**
 * @param dialect
 * @param columnName
 * @param expectedPhysicalColumnName
 */
private void assertExpectedPhysicalColumnName(Dialect dialect, String columnName, String expectedPhysicalColumnName) {
    JdbcEnvironment context = Mockito.mock(JdbcEnvironment.class);
    when(context.getDialect()).thenReturn(dialect);

    Identifier classIdentifier = Identifier.toIdentifier(columnName);
    String actualPhysicalName = namingStrategy.toPhysicalColumnName(classIdentifier, context).getText();

    assertEquals(expectedPhysicalColumnName, actualPhysicalName);
}
项目:shogun2    文件:OracleNamingStrategyShogun2Test.java   
/**
 * @param dialect
 * @param columnName
 * @param expectedPhysicalColumnName
 */
private void assertExpectedPhysicalColumnName(Dialect dialect, String columnName, String expectedPhysicalColumnName) {
    JdbcEnvironment context = Mockito.mock(JdbcEnvironment.class);
    when(context.getDialect()).thenReturn(dialect);

    Identifier classIdentifier = Identifier.toIdentifier(columnName);
    String actualPhysicalName = oracleNamingStrategyShogun2.toPhysicalColumnName(classIdentifier, context).getText();

    assertEquals(expectedPhysicalColumnName, actualPhysicalName);
}
项目:midpoint    文件:MidPointPhysicalNamingStrategy.java   
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
    Identifier i = super.toPhysicalColumnName(name, context);

    LOGGER.trace("toPhysicalColumnName {} -> {}", name, i);

    return i;
}
项目:todo-list-webapp-angular2-spring-mvc-boot-data-rest    文件:CustomNamingStrategy.java   
@Override
public Identifier toPhysicalCatalogName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
    System.out.println("<<<<<<<<<<<<<<<<<< Name: "+identifier);
    return identifier;
}
项目:todo-list-webapp-angular2-spring-mvc-boot-data-rest    文件:CustomNamingStrategy.java   
@Override
public Identifier toPhysicalSchemaName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
    System.out.println("<<<<<<<<<<<<<<<<<< Name: "+identifier);
    return identifier;
}
项目:todo-list-webapp-angular2-spring-mvc-boot-data-rest    文件:CustomNamingStrategy.java   
@Override
public Identifier toPhysicalTableName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
    System.out.println("<<<<<<<<<<<<<<<<<< Name: "+identifier);
    return identifier;
}
项目:todo-list-webapp-angular2-spring-mvc-boot-data-rest    文件:CustomNamingStrategy.java   
@Override
public Identifier toPhysicalSequenceName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
    System.out.println("<<<<<<<<<<<<<<<<<< Name: "+identifier);
    return identifier;
}
项目:todo-list-webapp-angular2-spring-mvc-boot-data-rest    文件:CustomNamingStrategy.java   
@Override
public Identifier toPhysicalColumnName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
    System.out.println("<<<<<<<<<<<<<<<<<< Name: "+identifier);
    return identifier;
}