/*******************************************************************************
* Copyright (c) 2007, 2009 Red Hat, Inc.
* 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:
* Red Hat - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.rpm.ui.editor.parser;
import org.eclipse.linuxtools.rpm.ui.editor.parser.Specfile;
import org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileElement;
import org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfilePackage;
public class SpecfileTag extends SpecfileElement {
public enum TagType {
INT, STRING
}
private TagType tagType;
private String stringValue;
private int intValue;
private SpecfilePackage parent;
public SpecfileTag() {
// Empty constructor
}
public SpecfileTag(String name, String value, Specfile specfile,
SpecfilePackage parentPackage) {
setName(name);
this.stringValue = value;
this.tagType = TagType.STRING;
super.setSpecfile(specfile);
this.parent = parentPackage;
}
public SpecfileTag(String name, int value, Specfile specfile,
SpecfilePackage parentPackage) {
setName(name);
this.intValue = value;
this.tagType = TagType.INT;
super.setSpecfile(specfile);
this.parent = parentPackage;
}
public String getStringValue() {
if (tagType == TagType.INT) {
return Integer.toString(intValue);
}
return resolve(stringValue);
}
public String getUnresolvedStringValue() {
return stringValue;
}
public void setValue(String value) {
this.tagType = TagType.STRING;
this.stringValue = value;
}
public int getIntValue() {
return intValue;
}
public void setValue(int value) {
this.tagType = TagType.INT;
this.intValue = value;
}
public SpecfilePackage getParent() {
return parent;
}
public void setParent(SpecfilePackage parent) {
this.parent = parent;
}
@Override
public String toString() {
if (tagType == TagType.INT) {
return getName() + ": " + getIntValue(); //$NON-NLS-1$
}
String tagValue = getStringValue();
if ((tagValue != null) && (tagValue.length() > 0)
&& (tagValue.indexOf('%') > 0)) {
return getName() + ": " + super.resolve(tagValue); //$NON-NLS-1$
}
return getName() + ": " + getStringValue(); //$NON-NLS-1$
}
public TagType getTagType() {
return tagType;
}
}