blob: a54764e8b0ded6d695b184487dae9b06211ba7e0 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package org.apache.openoffice.ooxml.schema.model.base;
import javax.xml.namespace.QName;
/** Similar to the QName class. A qualified name that consists of the local
* part and a namespace.
* The namespace is stored both as URI and short form (prefix).
*/
public class QualifiedName
implements Comparable<QualifiedName>
{
public QualifiedName (final QName aName)
{
msLocalPart = aName.getLocalPart();
msNamespacePrefix = aName.getPrefix();
msNamespaceURI = aName.getNamespaceURI();
}
public QualifiedName (
final String sNamespaceURI,
final String sNamespacePrefix,
final String sLocalPart)
{
msLocalPart = sLocalPart;
msNamespacePrefix = sNamespacePrefix;
msNamespaceURI = sNamespaceURI;
}
public QualifiedName (final String sLocalPart)
{
this(null, null, sLocalPart);
}
/** Return a textual representation for informal (and informative) display.
*/
public String GetDisplayName ()
{
if (msNamespacePrefix == null)
return msLocalPart;
else
return msNamespacePrefix + ":" + msLocalPart;
}
public String GetStateName()
{
if (msNamespacePrefix == null)
return msLocalPart;
else
return msNamespacePrefix + "_" + msLocalPart;
}
public String GetNamespaceURI ()
{
return msNamespaceURI;
}
public String GetNamespacePrefix ()
{
return msNamespacePrefix;
}
public String GetLocalPart ()
{
return msLocalPart;
}
/** Compare QualifiedName objects (e.g. for sorting them).
* Primary sort key is the local part.
* Secondary key is the namespace prefix.
* Missing prefixes come before existing prefixes.
*/
@Override
public int compareTo (final QualifiedName aOther)
{
final int nComparisonResult = msLocalPart.compareTo(aOther.msLocalPart);
if (nComparisonResult != 0)
return nComparisonResult;
else
if (msNamespacePrefix==null && aOther.msNamespacePrefix==null)
return 0;
else if (msNamespacePrefix!=null && aOther.msNamespacePrefix!=null)
return msNamespacePrefix.compareTo(aOther.msNamespacePrefix);
else if (msNamespacePrefix==null)
return -1;
else
return +1;
}
@Override
public String toString ()
{
return GetDisplayName();
}
private final String msLocalPart;
private final String msNamespacePrefix;
private final String msNamespaceURI;
}