/**************************************************************************
OmegaT - Computer Assisted Translation (CAT) tool
with fuzzy matching, translation memory, keyword search,
glossaries, and translation leveraging into updated projects.
Copyright (C) 2000-2006 Keith Godfrey and Maxym Mykhalchuk
2013 Alex Buloichik
Home page: http://www.omegat.org/
Support center: http://groups.yahoo.com/group/OmegaT/
This file is part of OmegaT.
OmegaT is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OmegaT 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
**************************************************************************/
package org.omegat.filters3.xml;
/**
* Entity declaration in XML file's Document type declaration. For example,
* <code><!ENTITY gloss SYSTEM "gloss.xml"></code> is external entity and
* <code><!ENTITY % dbnotn.module "INCLUDE"></code> is internal one.
*
* @author Maxym Mykhalchuk
* @author Alex Buloichik
*/
public class Entity {
private boolean internal;
/** Whether entity is internal. If false, it's an external entity. */
public boolean isInternal() {
return internal;
}
private boolean parameter;
/** Whether entity is a parameter entity. */
public boolean isParameter() {
return parameter;
}
private String name, originalName;
/** Returns entity's name. */
public String getName() {
return name;
}
/** Returns entity's original name, with '%' for parameter entities. */
public String getOriginalName() {
return originalName;
}
private String value;
/** Returns entity's value. */
public String getValue() {
return value;
}
private String publicId;
/** Returns entity's publicId. */
public String getPublicId() {
return publicId;
}
private String systemId;
/** Returns entity's systemId. */
public String getSystemId() {
return systemId;
}
private void setName(String name) {
originalName = name;
if (name.codePointAt(0) == '%') {
parameter = true;
this.name = name.substring(name.offsetByCodePoints(0, 1));
} else {
parameter = false;
this.name = name;
}
}
/** Creates internal entity. */
public Entity(String name, String value) {
internal = true;
setName(name);
this.value = value;
}
/** Creates external entity. */
public Entity(String name, String publicId, String systemId) {
internal = false;
setName(name);
this.publicId = publicId;
this.systemId = systemId;
}
/**
* Returns the entity as string.
*/
public String toString() {
StringBuilder res = new StringBuilder();
res.append("<!ENTITY");
if (parameter)
res.append(" %");
res.append(" ");
res.append(name);
if (internal) {
// <!ENTITY % name "value">
res.append(" \"" + value + "\"");
} else {
// <!ENTITY gloss SYSTEM "gloss.xml">
if (publicId != null)
res.append(" PUBLIC \"" + publicId + "\"");
res.append(" SYSTEM \"" + systemId + "\"");
}
res.append(">");
return res.toString();
}
}