From 4ac189421a9cdfdaf8c583321520d8a14ee1c279 Mon Sep 17 00:00:00 2001
From: Nick Burch
Date: Wed, 3 Jul 2013 11:36:11 +0000
Subject: Refactor to avoid logic duplication on the property value -> string
conversion
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1499329 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/poi/hpsf/SpecialPropertySet.java | 29 ++++++++--------
.../hpsf/extractor/HPSFPropertiesExtractor.java | 40 ++++++++--------------
2 files changed, 28 insertions(+), 41 deletions(-)
(limited to 'src/java')
diff --git a/src/java/org/apache/poi/hpsf/SpecialPropertySet.java b/src/java/org/apache/poi/hpsf/SpecialPropertySet.java
index c40641aa98..993765f6a5 100644
--- a/src/java/org/apache/poi/hpsf/SpecialPropertySet.java
+++ b/src/java/org/apache/poi/hpsf/SpecialPropertySet.java
@@ -51,17 +51,14 @@ import org.apache.poi.util.LittleEndian;
* general {@link PropertySet}. However, the current implementation
* went the other way round historically: the convenience classes came
* only late to my mind.
- *
- * @author Rainer Klute <klute@rainer-klute.de>
*/
public abstract class SpecialPropertySet extends MutablePropertySet
{
- /**
- * The id to name mapping of the properties
- * in this set.
- */
- public abstract PropertyIDMap getPropertySetIDMap();
+ /**
+ * The id to name mapping of the properties
+ * in this set.
+ */
+ public abstract PropertyIDMap getPropertySetIDMap();
/**
* The "real" property set SpecialPropertySet
@@ -332,15 +329,17 @@ public abstract class SpecialPropertySet extends MutablePropertySet
* @return The property as a String, or null if unavailable
*/
protected String getPropertyStringValue(final int propertyId) {
- Object o = getProperty(propertyId);
-
+ Object propertyValue = getProperty(propertyId);
+ return getPropertyStringValue(propertyValue);
+ }
+ protected static String getPropertyStringValue(final Object propertyValue) {
// Normal cases
- if (o == null) return null;
- if (o instanceof String) return (String)o;
+ if (propertyValue == null) return null;
+ if (propertyValue instanceof String) return (String)propertyValue;
// Do our best with some edge cases
- if (o instanceof byte[]) {
- byte[] b = (byte[])o;
+ if (propertyValue instanceof byte[]) {
+ byte[] b = (byte[])propertyValue;
if (b.length == 0) {
return "";
}
@@ -356,7 +355,7 @@ public abstract class SpecialPropertySet extends MutablePropertySet
// Maybe it's a string? who knows!
return new String(b);
}
- return o.toString();
+ return propertyValue.toString();
}
diff --git a/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java b/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java
index 7907408c0b..7150b6c1c9 100644
--- a/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java
+++ b/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java
@@ -32,7 +32,6 @@ import org.apache.poi.hpsf.SummaryInformation;
import org.apache.poi.hpsf.wellknown.PropertyIDMap;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-import org.apache.poi.util.LittleEndian;
/**
* Extracts all of the HPSF properties, both
@@ -66,7 +65,7 @@ public class HPSFPropertiesExtractor extends POITextExtractor {
Iterator keys = cps.nameSet().iterator();
while (keys.hasNext()) {
String key = keys.next();
- String val = getPropertyValueText( cps.get(key) );
+ String val = HelperPropertySet.getPropertyValueText( cps.get(key) );
text.append(key + " = " + val + "\n");
}
}
@@ -98,35 +97,12 @@ public class HPSFPropertiesExtractor extends POITextExtractor {
type = typeObj.toString();
}
- String val = getPropertyValueText( props[i].getValue() );
+ String val = HelperPropertySet.getPropertyValueText( props[i].getValue() );
text.append(type + " = " + val + "\n");
}
return text.toString();
}
- private static String getPropertyValueText(Object val) {
- if (val == null) {
- return "(not set)";
- }
- if (val instanceof byte[]) {
- byte[] b = (byte[])val;
- if (b.length == 0) {
- return "";
- }
- if (b.length == 1) {
- return Byte.toString(b[0]);
- }
- if (b.length == 2) {
- return Integer.toString( LittleEndian.getUShort(b) );
- }
- if (b.length == 4) {
- return Long.toString( LittleEndian.getUInt(b) );
- }
- // Maybe it's a string? who knows!
- return new String(b);
- }
- return val.toString();
- }
/**
* @return the text of all the properties defined in
@@ -142,6 +118,18 @@ public class HPSFPropertiesExtractor extends POITextExtractor {
public POITextExtractor getMetadataTextExtractor() {
throw new IllegalStateException("You already have the Metadata Text Extractor, not recursing!");
}
+
+ private static abstract class HelperPropertySet extends SpecialPropertySet {
+ public HelperPropertySet() {
+ super(null);
+ }
+ public static String getPropertyValueText(Object val) {
+ if (val == null) {
+ return "(not set)";
+ }
+ return SpecialPropertySet.getPropertyStringValue(val);
+ }
+ }
public static void main(String[] args) throws IOException {
for (String file : args) {
--
cgit v1.2.3