All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.odftoolkit.odfdom.changes.TextFieldSelection Maven / Gradle / Ivy
/*
* Copyright 2012 The Apache Software Foundation.
*
* Licensed 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.odftoolkit.odfdom.changes;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.odftoolkit.odfdom.changes.OperationConstants.*;
import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclElement;
import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;
import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
import org.odftoolkit.odfdom.pkg.OdfElement;
/**
*
* @author svante.schubertATgmail.com
*/
public class TextFieldSelection extends TextSelection implements Comparable {
private String mReplacementText;
private final Map mAttrs = new HashMap();
/**
* Constructor.
*
* @param fieldElement the fieldElement of the Field element.
* @param startPosition the startPosition of the Field element.
*/
public TextFieldSelection(OdfElement fieldElement, List startPosition, OdfOfficeAutomaticStyles autoStyles, Map userFieldDecls) {
mSelectionElement = fieldElement;
mStartPosition = startPosition;
FieldMap currentMap = FieldMap.fieldMap.get(fieldElement.getLocalName());
if (currentMap != null) {
String attributeValue = null;
if (currentMap.hasFixed() && !(attributeValue = mSelectionElement.getAttribute("text:fixed")).isEmpty()) {
mAttrs.put("fixed", attributeValue.equals("true") ? "true" : "false");
}
if (currentMap.hasDateValue()) {
String dateValue = mSelectionElement.getAttribute(currentMap.hasTimeStyle() ? "text:time-value" : "text:date-value");
if (!dateValue.isEmpty()) {
mAttrs.put("dateValue", dateValue);
}
String dataStyleName = mSelectionElement.getAttribute("style:data-style-name");
if (!dataStyleName.isEmpty()) {
OdfNumberDateStyle dateStyle = autoStyles.getDateStyle(dataStyleName);
OdfElement baseStyle = null;
if (dateStyle != null) {
baseStyle = dateStyle;
mAttrs.put("dateFormat", dateStyle.getFormat(true));
} else {
OdfNumberTimeStyle timeStyle = autoStyles.getTimeStyle(dataStyleName);
if (timeStyle != null) {
baseStyle = timeStyle;
mAttrs.put("dateFormat", timeStyle.getFormat(true));
}
}
if (baseStyle != null) {
String language = baseStyle.getAttribute("number:language");
String country = baseStyle.getAttribute("number:country");
if (!language.isEmpty()) {
if (!country.isEmpty()) {
language += "-";
language += country;
}
mAttrs.put("locale", language);
}
}
}
}
if (currentMap.hasdbName() && !(attributeValue = mSelectionElement.getAttribute("text:database-name")).isEmpty()) {
mAttrs.put("dbName", attributeValue);
}
if (currentMap.hasTableType() && !(attributeValue = mSelectionElement.getAttribute("text:table-type")).isEmpty()) {
mAttrs.put("tableType", attributeValue);
}
if (currentMap.hasdbTable() && !(attributeValue = mSelectionElement.getAttribute("text:table-name")).isEmpty()) {
mAttrs.put("dbTable", attributeValue);
}
if (currentMap.hasdbColumn() && !(attributeValue = mSelectionElement.getAttribute("text:column-name")).isEmpty()) {
mAttrs.put("dbColumn", attributeValue);
}
if (currentMap.hasDisplay() && !(attributeValue = mSelectionElement.getAttribute("text:display")).isEmpty()) {
mAttrs.put("display", attributeValue);
}
if (currentMap.hasRefFormat() && !(attributeValue = mSelectionElement.getAttribute("text:reference-format")).isEmpty()) {
mAttrs.put("refFormat", attributeValue);
}
if (currentMap.hasRefName() && !(attributeValue = mSelectionElement.getAttribute("text:ref-name")).isEmpty()) {
mAttrs.put("refName", attributeValue);
}
if (currentMap.hasOutlinelevel() && !(attributeValue = mSelectionElement.getAttribute("text:outline-level")).isEmpty()) {
mAttrs.put("outlineLevel", attributeValue);
}
if (currentMap.hasPageNumFormat() && !(attributeValue = mSelectionElement.getAttribute("style:num-format")).isEmpty()) {
mAttrs.put("pageNumFormat", attributeValue);
}
if (currentMap.hasNumLetterSync() && !(attributeValue = mSelectionElement.getAttribute("style:num-letter-sync")).isEmpty()) {
mAttrs.put("numLetterSync", attributeValue);
}
if (currentMap.hasCondition() && !(attributeValue = mSelectionElement.getAttribute("text:condition")).isEmpty()) {
mAttrs.put("condition", attributeValue);
}
if (currentMap.hasCurrentValue() && !(attributeValue = mSelectionElement.getAttribute("text:current-value")).isEmpty()) {
mAttrs.put("currentValue", attributeValue);
}
if (currentMap.hasFalseValue() && !(attributeValue = mSelectionElement.getAttribute("text:string-value-if-false")).isEmpty()) {
mAttrs.put("falseValue", attributeValue);
}
if (currentMap.hasTrueValue() && !(attributeValue = mSelectionElement.getAttribute("text:string-value-if-true")).isEmpty()) {
mAttrs.put("trueValue", attributeValue);
}
if (currentMap.hasConnectionName() && !(attributeValue = mSelectionElement.getAttribute("text:connection-name")).isEmpty()) {
mAttrs.put("connectionName", attributeValue);
}
if (currentMap.hasDuration() && !(attributeValue = mSelectionElement.getAttribute("text-duration")).isEmpty()) {
mAttrs.put("duration", attributeValue);
}
if (currentMap.hasName() && !(attributeValue = mSelectionElement.getAttribute("text:name")).isEmpty()) {
mAttrs.put("name", attributeValue);
}
if (currentMap.hasBoolValue() && !(attributeValue = mSelectionElement.getAttribute("office:boolean-value")).isEmpty()) {
mAttrs.put("boolValue", attributeValue);
}
if (currentMap.hasCurrency() && !(attributeValue = mSelectionElement.getAttribute("office:currency")).isEmpty()) {
mAttrs.put("currency", attributeValue);
}
if (currentMap.hasStringValue() && !(attributeValue = mSelectionElement.getAttribute("office:value")).isEmpty()) {
mAttrs.put("stringValue", attributeValue);
}
if (currentMap.hasTimeValue() && !(attributeValue = mSelectionElement.getAttribute("text:time-value")).isEmpty()) {
mAttrs.put("timeValue", attributeValue);
}
if (currentMap.hasTValue() && !(attributeValue = mSelectionElement.getAttribute("text:value")).isEmpty()) {
mAttrs.put("value", attributeValue);
}
if (currentMap.hasOValue() && !(attributeValue = mSelectionElement.getAttribute("office:value")).isEmpty()) {
mAttrs.put("value", attributeValue);
}
if (currentMap.hasValueType()) {
if (fieldElement.getLocalName().equals("user-field-get")) {
TextUserFieldDeclElement fieldDecl = userFieldDecls.get(mAttrs.get("name"));
if (fieldDecl != null && !(attributeValue = fieldDecl.getAttribute("office:value-type")).isEmpty()) {
mAttrs.put("valueType", attributeValue);
}
} else if (!(attributeValue = mSelectionElement.getAttribute("office:value-type")).isEmpty()) {
mAttrs.put("valueType", attributeValue);
}
}
if (currentMap.hasFormula() && !(attributeValue = mSelectionElement.getAttribute("text:formula")).isEmpty()) {
mAttrs.put("formula", attributeValue);
}
if (currentMap.hasIsHidden() && !(attributeValue = mSelectionElement.getAttribute("xml:id")).isEmpty()) {
mAttrs.put("isHidden", attributeValue);
}
if (currentMap.hasId() && !(attributeValue = mSelectionElement.getAttribute("xml:id")).isEmpty()) {
mAttrs.put(OPK_ID, attributeValue);
}
if (currentMap.hasDescription() && !(attributeValue = mSelectionElement.getAttribute("text:description")).isEmpty()) {
mAttrs.put("description", attributeValue);
}
if (currentMap.hasActive() && !(attributeValue = mSelectionElement.getAttribute("text:active")).isEmpty()) {
mAttrs.put("active", attributeValue);
}
if (currentMap.hasHref() && !(attributeValue = mSelectionElement.getAttribute("xlink:href")).isEmpty()) {
mAttrs.put("href", attributeValue);
}
if (currentMap.hasPlaceHolderType() && !(attributeValue = mSelectionElement.getAttribute("text:placeholder-type")).isEmpty()) {
mAttrs.put("placeHolderType", attributeValue);
}
if (currentMap.hasKind() && !(attributeValue = mSelectionElement.getAttribute("text:kind")).isEmpty()) {
mAttrs.put("kind", attributeValue);
}
if (currentMap.hasLanguage() && !(attributeValue = mSelectionElement.getAttribute("script:language")).isEmpty()) {
mAttrs.put("language", attributeValue);
}
if (currentMap.hasLinkType() && !(attributeValue = mSelectionElement.getAttribute("xlink:type")).isEmpty()) {
mAttrs.put("linkType", attributeValue);
}
if (currentMap.hasNumFormat() && !(attributeValue = mSelectionElement.getAttribute("style:num-format")).isEmpty()) {
mAttrs.put("numFormat", attributeValue);
}
if (currentMap.hasPageAdjust() && !(attributeValue = mSelectionElement.getAttribute("text:page-adjust")).isEmpty()) {
mAttrs.put("pageAdjust", attributeValue);
}
if (currentMap.hasRowNumber() && !(attributeValue = mSelectionElement.getAttribute("text:row-number")).isEmpty()) {
mAttrs.put("rowNumber", attributeValue);
}
}
}
/**
* Constructor.
*
* @param fieldElement the fieldElement of the Field element.
* @param startPosition the startPosition of the Field element.
*/
public TextFieldSelection(OdfElement fieldElement, List startPosition, String replacementText) {
mSelectionElement = fieldElement;
mStartPosition = startPosition;
mReplacementText = replacementText;
}
/**
* Constructor.
*
* @param fieldElement the fieldElement of the Field element.
* @param startPosition the startPosition of the Field element.
*/
TextFieldSelection(OdfElement fieldElement, List startPosition, List endPosition) {
mSelectionElement = fieldElement;
mStartPosition = startPosition;
mEndPosition = endPosition;
}
public String getReplacementText() {
return mReplacementText;
}
public Map getAttributes() {
return mAttrs;
}
@Override
public String toString() {
return mStartPosition.toString() + "-URL" + mUrl + "-" + mEndPosition.toString() + mSelectionElement.toString();
}
}