package org.objectstyle.wolips.bindings.wod; import org.eclipse.jface.text.Position; public class SimpleWodBinding extends AbstractWodBinding { private String _namespace; private String _name; private String _valueNamespace; private String _value; private Position _namespacePosition; private Position _namePosition; private Position _valueNamespacePosition; private Position _valuePosition; private int _lineNumber; private int _startOffset; private int _endOffset; public SimpleWodBinding(IWodBinding wodBinding) { this(wodBinding.getNamespace(), wodBinding.getName(), wodBinding.getValueNamespace(), wodBinding.getValue(), wodBinding.getNamespacePosition(), wodBinding.getNamePosition(), wodBinding.getValueNamespacePosition(), wodBinding.getValuePosition(), wodBinding.getLineNumber()); } public SimpleWodBinding(String namespace, String name, String value) { this(namespace, name, value, null, null, null, null, null, -1); } public SimpleWodBinding(String namespace, String name, String value, boolean literal) { this(namespace, name, null, (literal) ? ("\"" + value + "\"") : value, null, null, null, null, -1); } public SimpleWodBinding(String namespace, String name, String valueNamespace, String value, Position namespacePosition, Position namePosition, Position valueNamespacePosition, Position valuePosition, int lineNumber) { _namespace = namespace; _name = name; _value = value; _valueNamespace = valueNamespace; _namePosition = namePosition; _valueNamespacePosition = valueNamespacePosition; _valuePosition = valuePosition; _lineNumber = lineNumber; _startOffset = -1; _endOffset = -1; } public String getNamespace() { return _namespace; } public String getName() { return _name; } public String getValue() { return _value; } public String getValueNamespace() { return _valueNamespace; } public void setValueNamespace(String valueNamespace) { String oldValueNamespace = _valueNamespace; _valueNamespace = valueNamespace; if (_valueNamespacePosition != null && _valueNamespace != null) { setValueNamespacePosition(new Position(_valueNamespacePosition.getOffset(), _valueNamespace.length())); } int oldLength; if (oldValueNamespace != null) { oldLength = oldValueNamespace.length(); } else { oldLength = 0; } int newLength = valueNamespace.length(); int diff = newLength - oldLength; if (_valuePosition != null) { setValuePosition(new Position(_valuePosition.getOffset() + diff, _valuePosition.getLength())); } } public void setValue(String value) { //String oldValue = _value; _value = value; if (_valuePosition != null && _value != null) { setValuePosition(new Position(_valuePosition.getOffset(), _value.length())); } } public void setNamespace(String namespace) { String oldNamespace = _namespace; _namespace = namespace; if (_namespacePosition != null && _namespace != null) { setNamespacePosition(new Position(_namespacePosition.getOffset(), _namespace.length())); } int oldLength; if (oldNamespace != null) { oldLength = oldNamespace.length(); } else { oldLength = 0; } int newLength = namespace.length(); int diff = newLength - oldLength; setNamePosition(new Position(_namePosition.getOffset() + diff, _valuePosition.getLength())); if (_valueNamespacePosition != null) { setValueNamespacePosition(new Position(_valueNamespacePosition.getOffset() + diff, _valueNamespacePosition.getLength())); } if (_valuePosition != null) { setValuePosition(new Position(_valuePosition.getOffset() + diff, _valuePosition.getLength())); } } public void setName(String name) { String oldName = _name; _name = name; if (_namePosition != null && _name != null) { setNamePosition(new Position(_namePosition.getOffset(), _name.length())); } int oldLength; if (oldName != null) { oldLength = oldName.length(); } else { oldLength = 0; } int newLength = name.length(); int diff = newLength - oldLength; if (_valueNamespacePosition != null) { setValueNamespacePosition(new Position(_valueNamespacePosition.getOffset() + diff, _valueNamespacePosition.getLength())); } if (_valuePosition != null) { setValuePosition(new Position(_valuePosition.getOffset() + diff, _valuePosition.getLength())); } } public void setEndOffset(int endOffset) { _endOffset = endOffset; } public int getEndOffset() { int endOffset; if (_endOffset != -1) { endOffset = _endOffset; } else if (_valuePosition != null) { endOffset = _valuePosition.getOffset() + _valuePosition.getLength(); } else { endOffset = getStartOffset(); } return endOffset; } public void setStartOffset(int startOffset) { _startOffset = startOffset; } public int getStartOffset() { int startOffset; if (_startOffset != -1) { startOffset = _startOffset; } else if (_namespacePosition != null) { startOffset = _namespacePosition.getOffset(); } else if (_namePosition != null) { startOffset = _namePosition.getOffset(); } else { startOffset = 0; } return startOffset; } public void setNamespacePosition(Position namespacePosition) { _namespacePosition = namespacePosition; } public Position getNamespacePosition() { return _namespacePosition; } public void setNamePosition(Position namePosition) { _namePosition = namePosition; } public Position getNamePosition() { return _namePosition; } public void setValuePosition(Position valuePosition) { _valuePosition = valuePosition; } public Position getValuePosition() { return _valuePosition; } public Position getValueNamespacePosition() { return _valueNamespacePosition; } public void setValueNamespacePosition(Position valueNamespacePosition) { _valueNamespacePosition = valueNamespacePosition; } @Override public int getLineNumber() { return _lineNumber; } }