schemacrawler.crawl.ImmutableDatabaseProperty Maven / Gradle / Ivy
/*
*
* SchemaCrawler
* http://www.schemacrawler.com
* Copyright (c) 2000-2016, Sualeh Fatehi.
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
*/
package schemacrawler.crawl;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import schemacrawler.schema.DatabaseProperty;
import schemacrawler.schema.Property;
class ImmutableDatabaseProperty
extends AbstractProperty
implements DatabaseProperty
{
private static final long serialVersionUID = -7150431683440256142L;
private static final Set> acronyms;
static
{
final Map acronymsMap = new HashMap<>();
acronymsMap.put("JDBC", "Jdbc");
acronymsMap.put("ANSI", "Ansi");
acronymsMap.put("SQL", "Sql");
acronymsMap.put("URL", "Url");
acronymsMap.put("TYPE_FORWARD_ONLY", "Type_forward_only");
acronymsMap.put("TYPE_SCROLL_INSENSITIVE", "Type_scroll_insensitive");
acronymsMap.put("TYPE_SCROLL_SENSITIVE", "Type_scroll_sensitive");
acronyms = Collections.unmodifiableSet(acronymsMap.entrySet());
}
ImmutableDatabaseProperty(final String name, final Object value)
{
super(name, (Serializable) value);
}
@Override
public int compareTo(final Property otherDbProperty)
{
if (otherDbProperty == null)
{
return -1;
}
else
{
return getDescription().toLowerCase()
.compareTo(otherDbProperty.getDescription().toLowerCase());
}
}
/**
* {@inheritDoc}
*/
@Override
public String getDescription()
{
final String get = "get";
String description = getName();
if (description.startsWith(get))
{
description = description.substring(get.length());
}
for (final Entry acronym: acronyms)
{
description = description.replaceAll(acronym.getKey(),
acronym.getValue());
}
final int strLen = description.length();
final StringBuilder buffer = new StringBuilder(strLen);
for (int i = 0; i < strLen; i++)
{
final char ch = description.charAt(i);
if (Character.isUpperCase(ch) || Character.isTitleCase(ch))
{
buffer.append(' ').append(Character.toLowerCase(ch));
}
else
{
buffer.append(ch);
}
}
description = buffer.toString();
for (final Entry acronym: acronyms)
{
description = description.replaceAll(acronym.getValue().toLowerCase(),
acronym.getKey());
description = description.replaceAll(acronym.getValue(),
acronym.getKey());
}
description = description.trim();
return description;
}
@Override
public String toString()
{
return getDescription() + " = " + getValue();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy