perfsonar-dev - [pS-dev] [GEANT/SA2/ps-java-services] r6075 - in trunk: perfsonar-java-sql-ma/packaging/deb perfsonar- java-sql-ma/src/main/java/org/perfsonar/service/measuremen tArchive/sqlType perfsonar-java-sql-ma/src/main/java/org/p erfsonar/service/measurementArchive/sqlType/dao perfsonar- java-sql-ma/src/main/java/org/perfsonar/service/measuremen tArchive/sqlType/nmwg perfsonar-java-sql-ma/src/main/resou rces/db/migration/mysql perfsonar-java-sql-ma/src/main/res ources/perfsonar/conf perfsonar-java-sql-ma/src/test/java/ org/perfsonar/service/measurementArchive/sqlType perfsonar -java-sql-ma/src/test/java/org/perfsonar/service/measureme ntArchive/sqlType/dao perfsonar_base/src/main/java/org/p erfsonar/base/nmwg/owamp perfsonar_base/src/main/java/or g/perfsonar/service/measurementArchive/metadataConfig/quer yGenerator
Subject: perfsonar development work
List archive
[pS-dev] [GEANT/SA2/ps-java-services] r6075 - in trunk: perfsonar-java-sql-ma/packaging/deb perfsonar- java-sql-ma/src/main/java/org/perfsonar/service/measuremen tArchive/sqlType perfsonar-java-sql-ma/src/main/java/org/p erfsonar/service/measurementArchive/sqlType/dao perfsonar- java-sql-ma/src/main/java/org/perfsonar/service/measuremen tArchive/sqlType/nmwg perfsonar-java-sql-ma/src/main/resou rces/db/migration/mysql perfsonar-java-sql-ma/src/main/res ources/perfsonar/conf perfsonar-java-sql-ma/src/test/java/ org/perfsonar/service/measurementArchive/sqlType perfsonar -java-sql-ma/src/test/java/org/perfsonar/service/measureme ntArchive/sqlType/dao perfsonar_base/src/main/java/org/p erfsonar/base/nmwg/owamp perfsonar_base/src/main/java/or g/perfsonar/service/measurementArchive/metadataConfig/quer yGenerator
Chronological Thread
- From:
- To:
- Subject: [pS-dev] [GEANT/SA2/ps-java-services] r6075 - in trunk: perfsonar-java-sql-ma/packaging/deb perfsonar- java-sql-ma/src/main/java/org/perfsonar/service/measuremen tArchive/sqlType perfsonar-java-sql-ma/src/main/java/org/p erfsonar/service/measurementArchive/sqlType/dao perfsonar- java-sql-ma/src/main/java/org/perfsonar/service/measuremen tArchive/sqlType/nmwg perfsonar-java-sql-ma/src/main/resou rces/db/migration/mysql perfsonar-java-sql-ma/src/main/res ources/perfsonar/conf perfsonar-java-sql-ma/src/test/java/ org/perfsonar/service/measurementArchive/sqlType perfsonar -java-sql-ma/src/test/java/org/perfsonar/service/measureme ntArchive/sqlType/dao perfsonar_base/src/main/java/org/p erfsonar/base/nmwg/owamp perfsonar_base/src/main/java/or g/perfsonar/service/measurementArchive/metadataConfig/quer yGenerator
- Date: Thu, 20 Dec 2012 14:21:21 +0000 (GMT)
Author: nordunet.behrmann
Date: 2012-12-20 14:21:21 +0000 (Thu, 20 Dec 2012)
New Revision: 6075
Added:
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/NmwgParameterSource.java
trunk/perfsonar-java-sql-ma/src/main/resources/db/migration/mysql/V2__Add_owamp_tables.sql
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/NmwgParameterSourceTest.java
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/ParseUtilsTest.java
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/Datum.java
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/SummaryDatum.java
Removed:
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/nmwg/OwampAggregationDatum.java
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/mysql-sqlma-dbupdate-owamp.sql
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/mysql-sqlma-dbupdate-owamp_v2.sql
Modified:
trunk/perfsonar-java-sql-ma/packaging/deb/conffiles
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/SQLTypeMAServiceEngine.java
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/OwampDao.java
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/ParseUtils.java
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/objects.config
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/Parameters.java
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/OwampQueryGenerator.java
Log:
perfsonar_base, perfsonar-java-sql-ma: Add OWAMP support
Supports both OWAMP raw and summary formats. The RDBMS schema will
automatically be migrated to version 2.
Modified: trunk/perfsonar-java-sql-ma/packaging/deb/conffiles
===================================================================
--- trunk/perfsonar-java-sql-ma/packaging/deb/conffiles 2012-12-20 12:23:36
UTC (rev 6074)
+++ trunk/perfsonar-java-sql-ma/packaging/deb/conffiles 2012-12-20 14:21:21
UTC (rev 6075)
@@ -9,29 +9,7 @@
/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/perfsonar/conf/sql-database_TEST.xml
/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/perfsonar/conf/wizard.properties
/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/perfsonar/conf/wizardproperties.dtd
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/perfsonar/conf/mysql-sqlma-dbremove.sql
/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/perfsonar/conf/mysql-sqlma-dbsetup.sql
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/perfsonar/conf/mysql-sqlma-dbupdate-owamp.sql
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/perfsonar/conf/mysql-sqlma-dbupdate-owamp_v2.sql
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/perfsonar/conf/mysql-sqlma-dbupdate.sql
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-utilization.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-utilization.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-discards.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-discards.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-errors.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-errors.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-L2-status-domain.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-L2-status-domain.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-L2-status-interdomain.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-L2-status-interdomain.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-clmp-bwctl.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-clmp-bwctl.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-clmp-owamp.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-clmp-owamp.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-owamp-aggregation.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-owamp-aggregation.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-SqlMapConfig-clmp-ping.xml
-/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/classes/ibatis-clmp-ping.xml
/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/web.xml
/usr/lib/perfsonar/services/geant2-java-sql-ma/WEB-INF/server-config.wsdd
Modified:
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/SQLTypeMAServiceEngine.java
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/SQLTypeMAServiceEngine.java
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/SQLTypeMAServiceEngine.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -10,6 +10,7 @@
import org.ggf.ns.nmwg.base.v2_0.Key;
import org.ggf.ns.nmwg.base.v2_0.Message;
import org.ggf.ns.nmwg.base.v2_0.Metadata;
+import org.ggf.ns.nmwg.base.v2_0.Parameter;
import org.ggf.ns.nmwg.base.v2_0.Parameters;
import org.ggf.ns.nmwg.base.v2_0.Subject;
@@ -116,9 +117,9 @@
for (Data keyData : (Collection<Data>)
keyMessage.getDataMap().values()) {
// Fetch data from data store
Metadata queryMetadata = new Metadata();
- queryMetadata.addChild(keyData.getKey());
+ queryMetadata.setKey(keyData.getKey());
Message query = new Message();
- query.addChild(queryMetadata);
+ query.setMetadata(queryMetadata);
Message dMsg = storageManager.fetch(query);
// Add metadata elements to response
@@ -155,10 +156,9 @@
for (Data data : (Collection<Data>) request.getDataMap().values()) {
Metadata meta = request.getMetadata(data.getMetadataIdRef());
if (meta != null) {
- Key key = getStoreKey(meta);
+ Metadata md = new Metadata();
+ md.setKey(getStoreKey(meta));
- Metadata md = new Metadata();
- md.addChild(key);
Message msg = new Message();
msg.addChild(md);
msg.addChild(data);
@@ -209,13 +209,10 @@
try {
resp = metadataConfig.fetch(query);
} catch (PerfSONARException sex) {
- if
(sex.getResultCode().equals("warning.ma.metadata_configuration")) {
- resp = new Message();
- } else {
- throw new PerfSONARException(
- sex.getResultCode(),
- sex.getResultDescription());
+ if
(!sex.getResultCode().equals("warning.ma.metadata_configuration")) {
+ throw sex;
}
+ resp = new Message();
}
if (!resp.getDataMap().isEmpty()) {
@@ -231,14 +228,20 @@
// metadata does not exist in xmldb
Metadata metadata2 = new Metadata();
- metadata2.addChild(metadata.getSubject());
+ metadata2.setSubject(metadata.getSubject());
metadata2.setEventType(eventTypeObj);
Parameters params = metadata.getParameters();
if (params != null) {
metadata2.setParameters(params);
}
+ /* Parameters are added to the key such that the data store
can
+ * access them. Eg. OwampDao needs to know the output format.
+ */
key = new Key();
+ for (Object parameter: params.getParameterMap().values()) {
+ key.addParameter((Parameter) parameter);
+ }
key.addParameter("metadataId", metadata2.getId());
key.addParameter("eventType", eventType);
Added:
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/NmwgParameterSource.java
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/NmwgParameterSource.java
(rev 0)
+++
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/NmwgParameterSource.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -0,0 +1,196 @@
+package org.perfsonar.service.measurementArchive.sqlType.dao;
+
+import com.google.common.base.Function;
+import com.google.common.base.Functions;
+import org.perfsonar.base.exceptions.PerfSONARException;
+import org.perfsonar.base.util.TimeDateUtil;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+
+import java.math.BigDecimal;
+import java.sql.Types;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+import java.util.Map;
+
+import static com.google.common.base.Functions.compose;
+
+public final class NmwgParameterSource extends MapSqlParameterSource
+{
+ private static final String DATE_FORMAT = "EEE MMM dd HH:mm:ss zzz yyyy";
+ private static final String DATE_MILLIS_FORMAT = "EEE MMM dd
HH:mm:ss.SSS zzz yyyy";
+
+ private static final Function<String, Float> PARSE_FLOAT =
+ new Function<String, Float>()
+ {
+ public Float apply(String s)
+ {
+ return Float.parseFloat(s);
+ }
+ };
+ private static final Function<String, BigDecimal> PARSE_BIGDECIMAL =
+ new Function<String, BigDecimal>()
+ {
+ public BigDecimal apply(String s)
+ {
+ return new BigDecimal(s);
+ }
+ };
+ private static final Function<String, Integer> PARSE_INTEGER =
+ new Function<String, Integer>()
+ {
+ public Integer apply(String s)
+ {
+ return Integer.parseInt(s);
+ }
+ };
+ private static final Function<String, Long> PARSE_LONG =
+ new Function<String, Long>()
+ {
+ public Long apply(String s)
+ {
+ return Long.parseLong(s);
+ }
+ };
+ private static final Function<Float, Float> NAN_TO_NULL =
+ new Function<Float, Float>()
+ {
+ @Override
+ public Float apply(Float value)
+ {
+ return value.isNaN() ? null : value;
+ }
+ };
+ private static final Function<String, Long> PARSE_ISO_TIME =
+ new Function<String, Long>()
+ {
+ @Override
+ public Long apply(String value)
+ {
+ try {
+ return TimeDateUtil.getUnixTime(value);
+ } catch (PerfSONARException e) {
+ throw new IllegalArgumentException(e.getMessage(), e);
+ }
+ }
+ };
+ private static final Function<String, Long> PARSE_DATE =
+ new Function<String, Long>()
+ {
+ @Override
+ public Long apply(String value)
+ {
+ try {
+ return new SimpleDateFormat(DATE_FORMAT,
Locale.US).parse(value).getTime();
+ } catch (ParseException e) {
+ try {
+ return new SimpleDateFormat(DATE_MILLIS_FORMAT,
Locale.US).parse(value).getTime();
+ } catch (ParseException e1) {
+ throw new IllegalArgumentException(e.getMessage(),
e);
+
+ }
+ }
+ }
+ };
+
+ public NmwgParameterSource()
+ {
+ }
+
+ private <T> NmwgParameterSource addAttribute(String attribute, String
str, Function<String, T> parser,
+ int sqlType, boolean
isRequired)
+ throws PerfSONARException
+ {
+ T value;
+ if (str == null) {
+ if (isRequired) {
+ throw new PerfSONARException("error.parameter", "Missing
attribute: " + attribute);
+ }
+ value = null;
+ } else {
+ str = str.trim();
+ if (str.isEmpty()) {
+ if (isRequired) {
+ throw new PerfSONARException("error.parameter", "Empty
attribute: " + attribute);
+ }
+ value = null;
+ } else {
+ try {
+ value = parser.apply(str);
+ } catch (IllegalArgumentException e) {
+ throw new PerfSONARException("error.parameter",
e.getMessage(), e);
+ }
+ }
+ }
+
+ addValue(attribute, value, sqlType);
+
+ return this;
+ }
+
+ @Override
+ public NmwgParameterSource addValue(String paramName, Object value)
+ {
+ return (NmwgParameterSource) super.addValue(paramName, value);
+ }
+
+ @Override
+ public NmwgParameterSource addValue(String paramName, Object value, int
sqlType)
+ {
+ return (NmwgParameterSource) super.addValue(paramName, value,
sqlType);
+ }
+
+ @Override
+ public NmwgParameterSource addValue(String paramName, Object value, int
sqlType, String typeName)
+ {
+ return (NmwgParameterSource) super.addValue(paramName, value,
sqlType, typeName);
+ }
+
+ @Override
+ public NmwgParameterSource addValues(Map<String, ?> values)
+ {
+ return (NmwgParameterSource) super.addValues(values);
+ }
+
+ public NmwgParameterSource addIntegerAttribute(String attribute, String
value, boolean isRequired)
+ throws PerfSONARException
+ {
+ return addAttribute(attribute, value, PARSE_INTEGER, Types.INTEGER,
isRequired);
+ }
+
+ public NmwgParameterSource addLongAttribute(String attribute, String
value, boolean isRequired)
+ throws PerfSONARException
+ {
+ return addAttribute(attribute, value, PARSE_LONG, Types.BIGINT,
isRequired);
+ }
+
+ public NmwgParameterSource addFloatAttribute(String attribute, String
value, boolean isRequired)
+ throws PerfSONARException
+ {
+ return addAttribute(attribute, value, compose(NAN_TO_NULL,
PARSE_FLOAT), Types.FLOAT, isRequired);
+ }
+
+ public NmwgParameterSource addStringAttribute(String attribute, String
value, boolean isRequired)
+ throws PerfSONARException
+ {
+ return addAttribute(attribute, value, Functions.<String>identity(),
Types.VARCHAR, isRequired);
+ }
+
+ public NmwgParameterSource addBigDecimalAttribute(String attribute,
String value, boolean isRequired)
+ throws PerfSONARException
+ {
+ return addAttribute(attribute, value, PARSE_BIGDECIMAL,
Types.DECIMAL, isRequired);
+ }
+
+ public NmwgParameterSource addIsoTimeAttribute(String attribute, String
value, boolean isRequired)
+ throws PerfSONARException
+ {
+ return addAttribute(attribute, value, PARSE_ISO_TIME, Types.BIGINT,
isRequired);
+ }
+
+ public NmwgParameterSource addDateAttribute(String attribute, String
value, boolean isRequired)
+ throws PerfSONARException
+ {
+ return addAttribute(attribute, value, PARSE_DATE, Types.BIGINT,
isRequired);
+ }
+}
Modified:
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/OwampDao.java
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/OwampDao.java
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/OwampDao.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -5,20 +5,15 @@
import org.ggf.ns.nmwg.base.v2_0.Key;
import org.ggf.ns.nmwg.base.v2_0.Metadata;
import org.ggf.ns.nmwg.base.v2_0.Parameter;
-import org.ggf.ns.nmwg.tools.owamp.v2_0.Datum;
import org.perfsonar.base.exceptions.PerfSONARException;
-import
org.perfsonar.service.measurementArchive.sqlType.nmwg.OwampAggregationDatum;
-import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+import org.perfsonar.base.nmwg.owamp.Datum;
+import org.perfsonar.base.nmwg.owamp.SummaryDatum;
import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
-import static
org.perfsonar.service.measurementArchive.sqlType.dao.ParseUtils.parseFloat;
-import static
org.perfsonar.service.measurementArchive.sqlType.dao.ParseUtils.parseInteger;
-import static
org.perfsonar.service.measurementArchive.sqlType.dao.ParseUtils.trim;
-
public class OwampDao implements Dao
{
private static final String NS_NMWG_BASE_2_0 =
"http://ggf.org/ns/nmwg/base/2.0/";
@@ -52,54 +47,51 @@
public void store(Metadata md, Element element)
throws PerfSONARException
{
- Datum datum = (Datum) element;
-
- MapSqlParameterSource parameters = new MapSqlParameterSource()
- .addValue("metadataId",
- md.getKey().getParameterByName(NS_NMWG_BASE_2_0,
"metadataId").getParameterValue(),
+ NmwgParameterSource parameters = new NmwgParameterSource()
+ .addValue("metadataId",
md.getKey().getParameterByName(NS_NMWG_BASE_2_0,
"metadataId").getParameterValue(),
Types.VARCHAR);
switch (getOutput(md.getKey())) {
case RAW:
+ Datum raw = (Datum) element;
parameters
- .addValue("receiveSynchronized",
parseInteger(datum.getReceiveSynchronized()).orNull(), Types.INTEGER)
- .addValue("receiveTime",
trim(datum.getReceiveTime()).orNull(), Types.VARCHAR)
- .addValue("receiveTimeError",
parseFloat(datum.getReceiveTimeError()).orNull(), Types.FLOAT)
- .addValue("sendSynchronized",
parseInteger(datum.getSendSynchronized()).orNull(), Types.INTEGER)
- .addValue("sendTime", trim(datum.getSendTime()).orNull(),
Types.VARCHAR)
- .addValue("sendTimeError",
parseFloat(datum.getSendTimeError()).orNull(), Types.FLOAT)
- .addValue("seqNum",
parseInteger(datum.getSeqNum()).orNull(), Types.INTEGER)
- .addValue("ttl", parseInteger(datum.getTTL()).orNull(),
Types.INTEGER);
-
+ .addIntegerAttribute("receiveSynchronized",
raw.getReceiveSynchronized(), true)
+ .addBigDecimalAttribute("receiveTime", raw.getReceiveTime(),
true)
+ .addFloatAttribute("receiveTimeError",
raw.getReceiveTimeError(), true)
+ .addIntegerAttribute("sendSynchronized",
raw.getSendSynchronized(), true)
+ .addBigDecimalAttribute("sendTime", raw.getSendTime(), true)
+ .addFloatAttribute("sendTimeError", raw.getSendTimeError(),
true)
+ .addIntegerAttribute("sequenceNumber",
raw.getSequenceNumber(), true)
+ .addIntegerAttribute("packetTTL", raw.getPacketTTL(), true);
jdbc.update("INSERT INTO owamp (metadataId, receiveSynchronized,
receiveTime, receiveTimeError, "
- + "sendSynchronized, sendTime,
sendTimeError, seqNum, ttl) "
+ + "sendSynchronized, sendTime,
sendTimeError, sequenceNumber, packetTTL) "
+ "VALUES (:metadataId,
:receiveSynchronized, :receiveTime, :receiveTimeError, "
- + ":sendSynchronized, :sendTime,
:sendTimeError, :seqNum, :ttl)", parameters);
+ + ":sendSynchronized, :sendTime,
:sendTimeError, :sequenceNumber, :packetTTL)",
+ parameters);
break;
case SUMMARY:
- OwampAggregationDatum agg = (OwampAggregationDatum) datum;
+ SummaryDatum agg = (SummaryDatum) element;
parameters
- .addValue("sender", trim(agg.getSender()).orNull(),
Types.VARCHAR)
- .addValue("receiver", trim(agg.getReceiver()).orNull(),
Types.VARCHAR)
- .addValue("sent", parseInteger(agg.getSent()).orNull(),
Types.INTEGER)
- .addValue("loss", parseInteger(agg.getLoss()).orNull(),
Types.INTEGER)
- .addValue("lostPercent",
parseFloat(agg.getLostPercent()).orNull(), Types.FLOAT)
- .addValue("duplicates",
parseInteger(agg.getDuplicates()).orNull(), Types.INTEGER)
- .addValue("minDelay",
parseFloat(agg.getMinDelay()).orNull(), Types.FLOAT)
- .addValue("medDelay",
parseFloat(agg.getMedDelay()).orNull(), Types.FLOAT)
- .addValue("maxDelay",
parseFloat(agg.getMaxDelay()).orNull(), Types.FLOAT)
- .addValue("delayUnits", trim(agg.getDelayUnits()).orNull(),
Types.VARCHAR)
- .addValue("error", parseFloat(agg.getError()).orNull(),
Types.FLOAT)
- .addValue("errorUnits", trim(agg.getErrorUnits()).orNull(),
Types.VARCHAR)
- .addValue("jitter", parseFloat(agg.getJitter()).orNull(),
Types.FLOAT)
- .addValue("jitterUnits",
trim(agg.getJitterUnits()).orNull(), Types.VARCHAR)
- .addValue("hops", parseInteger(agg.getHops()).orNull(),
Types.INTEGER);
-
- jdbc.update("INSERT INTO owamp_agg (metadataId, sender,
receiver, sent, loss, lostPercent, "
- + "duplicates, minDelay, medDelay, maxDelay,
delayUnits, error, errorUnits, jitter, "
- + "jitterUnits, hops) VALUES (:metadataId,
:sender, :receiver, :sent, :loss, "
- + ":lostPercent, :duplicates, :minDelay,
:medDelay, :maxDelay, :delayUnits, :error, "
- + ":errorUnits, :jitter, :jitterUnits, :hops)",
parameters);
+ .addStringAttribute("sender", agg.getSender(), true)
+ .addStringAttribute("receiver", agg.getReceiver(), true)
+ .addIntegerAttribute("sent", agg.getSent(), true)
+ .addIntegerAttribute("loss", agg.getLoss(), true)
+ .addFloatAttribute("lostPercent", agg.getLostPercent(), true)
+ .addIntegerAttribute("duplicates", agg.getDuplicates(), true)
+ .addFloatAttribute("minDelay", agg.getMinDelay(), true)
+ .addFloatAttribute("medDelay", agg.getMedDelay(), true)
+ .addFloatAttribute("maxDelay", agg.getMaxDelay(), true)
+ .addStringAttribute("timeType", agg.getTimeType(), true)
+ .addDateAttribute("startTime", agg.getStartTime(), true)
+ .addDateAttribute("endTime", agg.getEndTime(), true)
+ .addFloatAttribute("maxError", agg.getMaxError(), true)
+ .addFloatAttribute("jitter", agg.getJitter(), true)
+ .addIntegerAttribute("hops", agg.getHops(), true);
+ jdbc.update("INSERT INTO owamp_summary (metadataId, sender,
receiver, sent, loss, lostPercent, "
+ + "duplicates, minDelay, medDelay, maxDelay,
timeType, startTime, endTime, "
+ + "maxError, jitter, hops) VALUES (:metadataId,
:sender, :receiver, :sent, :loss, "
+ + ":lostPercent, :duplicates, :minDelay,
:medDelay, :maxDelay, :timeType, "
+ + ":startTime, :endTime, :maxError, :jitter,
:hops)", parameters);
break;
default:
throw new RuntimeException("Unreachable statement");
@@ -114,27 +106,31 @@
case RAW:
return jdbc.select(key,
"SELECT receiveSynchronized, receiveTime,
receiveTimeError, sendSynchronized, "
- + "sendTime, sendTimeError, seqNum,
timeType, timeValue, ttl "
+ + "sendTime, sendTimeError,
sequenceNumber, packetTTL "
+ "FROM owamp "
+ "WHERE metadataId = :metadataId AND ts
BETWEEN :start AND :end "
+ "ORDER by ts ASC",
"SELECT receiveSynchronized, receiveTime,
receiveTimeError, sendSynchronized, "
- + "sendTime, sendTimeError, seqNum, ttl "
+ + "sendTime, sendTimeError,
sequenceNumber, packetTTL "
+ "FROM owamp "
+ "WHERE metadataId = :metadataId",
new DataResultSetExtractor());
case SUMMARY:
return jdbc.select(key,
- "SELECT receiveSynchronized, receiveTime,
receiveTimeError, sendSynchronized, "
- + "sendTime, sendTimeError, seqNum,
timeType, timeValue, ttl "
- + "FROM owamp "
+ "SELECT sender, receiver, sent, loss,
lostPercent, duplicates, "
+ + "minDelay, medDelay, maxDelay,
timeType, startTime, endTime, "
+ + "maxError, jitter, hops "
+ + "FROM owamp_summary "
+ "WHERE metadataId = :metadataId AND ts
BETWEEN :start AND :end "
+ "ORDER by ts ASC",
- "SELECT receiveSynchronized, receiveTime,
receiveTimeError, sendSynchronized, "
- + "sendTime, sendTimeError, seqNum, ttl "
- + "FROM owamp "
- + "WHERE metadataId = :metadataId",
- new DataResultSetExtractor());
+ "SELECT sender, receiver, sent, loss,
lostPercent, duplicates, "
+ + "minDelay, medDelay, maxDelay,
timeType, startTime, endTime, "
+ + "maxError, jitter, hops "
+ + "FROM owamp_summary "
+ + "WHERE metadataId = :metadataId AND ts
= (SELECT MAX(ts) "
+ + "FROM owamp_summary WHERE metadataId =
:metadataId) "
+ + "ORDER BY ts ASC",
+ new SummaryDataResultSetExtractor());
default:
throw new RuntimeException("Unreachable statement");
}
@@ -146,15 +142,50 @@
protected Element toDatum(ResultSet rs) throws SQLException
{
Datum datum = new Datum();
- datum.setSeqNum(rs.getString("seqNum"));
+ datum.setSequenceNumber(rs.getString("sequenceNumber"));
datum.setSendTime(rs.getString("sendTime"));
datum.setSendSynchronized(rs.getString("sendSynchronization"));
datum.setSendTimeError(rs.getString("sendTimeError"));
- datum.setReceiveTime(rs.getString("receiveTime"));
+ datum.setReceiveTime(nullToNaN(rs.getString("receiveTime")));
datum.setReceiveSynchronized(rs.getString("receiveSynchronization"));
- datum.setReceiveTimeError(rs.getString("receiveTimeError"));
- datum.setTTL(rs.getString("ttl"));
+
datum.setReceiveTimeError(nullToNaN(rs.getString("receiveTimeError")));
+ datum.setPacketTTL(rs.getString("packetTTL"));
return datum;
}
}
+
+ private static class SummaryDataResultSetExtractor extends
AbstractDataResultSetExtractor
+ {
+ @Override
+ protected Element toDatum(ResultSet rs) throws SQLException
+ {
+ SummaryDatum datum = new SummaryDatum();
+ datum.setSender(rs.getString("sender"));
+ datum.setReceiver(rs.getString("receiver"));
+ datum.setLoss(rs.getString("loss"));
+ datum.setLostPercent(nullToNaN(rs.getString("lostPercent")));
+ datum.setDuplicates(rs.getString("duplicates"));
+ datum.setMinDelay(nullToNaN(rs.getString("minDelay")));
+ datum.setMedDelay(nullToNaN(rs.getString("medDelay")));
+ datum.setMaxDelay(nullToNaN(rs.getString("maxDelay")));
+ datum.setTimeType(rs.getString("timeType"));
+ datum.setStartTime(rs.getString("startTime"));
+ datum.setEndTime(rs.getString("endTime"));
+ datum.setMaxError(nullToNaN(rs.getString("maxError")));
+ datum.setJitter(nullToNaN(rs.getString("jitter")));
+ datum.setHops(rs.getString("hops"));
+ return datum;
+ }
+ }
+
+ private static String nullToNaN(String value)
+ {
+ return (value == null) ? "NaN" : value;
+ }
+
+ private static Float nanToNull(float value)
+ {
+ return Float.isNaN(value) ? null : value;
+ }
+
}
Modified:
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/ParseUtils.java
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/ParseUtils.java
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/dao/ParseUtils.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -6,6 +6,9 @@
import org.perfsonar.base.util.TimeDateUtil;
import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
import static com.google.common.base.Strings.emptyToNull;
import static com.google.common.base.Strings.nullToEmpty;
@@ -94,4 +97,26 @@
}
return Optional.absent();
}
+
+ public static Optional<Long> parseDateToString(String s) throws
PerfSONARException
+ {
+ if (s != null) {
+ s = s.trim();
+ if (!s.isEmpty()) {
+ try {
+ return Optional.of(new SimpleDateFormat("EEE MMM dd
HH:mm:ss zzz yyyy", Locale.US)
+ .parse(s).getTime());
+ } catch (ParseException e) {
+ try {
+ return Optional.of(new SimpleDateFormat("EEE MMM dd
HH:mm:ss.SSS zzz yyyy", Locale.US)
+ .parse(s).getTime());
+ } catch (ParseException e1) {
+ throw new PerfSONARException("error.parameter",
e.getMessage(), e);
+
+ }
+ }
+ }
+ }
+ return Optional.absent();
+ }
}
Deleted:
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/nmwg/OwampAggregationDatum.java
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/nmwg/OwampAggregationDatum.java
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar-java-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/sqlType/nmwg/OwampAggregationDatum.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -1,669 +0,0 @@
-package org.perfsonar.service.measurementArchive.sqlType.nmwg;
-
-/**
- * This describes the datum format of a ping measurement.
- *
- * @author Piotr Pikusa
- * @version $Id$
- * @see org.ggf.ns.nmwg.base.v2_0.Element
- * @see org.ggf.ns.nmwg.base.v2_0.Datum
- * @see org.ggf.ns.nmwg.time.v2_0.Time
- * @see org.w3c.dom.Document
- * @see org.w3c.dom.Element
- */
-
-import org.xml.sax.ContentHandler;
-import org.xml.sax.helpers.AttributesImpl;
-import org.ggf.ns.nmwg.base.v2_0.Element;
-import org.ggf.ns.nmwg.time.v2_0.Time;
-import org.xml.sax.helpers.NamespaceSupport;
-
-public class OwampAggregationDatum extends
org.ggf.ns.nmwg.tools.owamp.v2_0.Datum
-{
-
- public static final String FILENAME =
-
"org/perfsonar/service/measurementArchive/sqlType/nmwg/OwampAggregationDatum.java";
-
- /**
- * attribute for Sender.
- */
- protected String sender;
-
- /**
- * attribute for receiver.
- */
- protected String receiver;
-
- /**
- * attribute for sent.
- */
- protected String sent;
-
- /**
- * attribute for loss.
- */
- protected String loss;
-
- /**
- * attribute for RECVTIME (Receive timestamp).
- */
- protected String duplicates;
-
- /**
- * attribute for Lost in percrent.
- */
- protected String lostPercent;
-
- /**
- * attribute for minimum dealy.
- */
- protected String minDelay;
-
- /**
- * attribute for medium delay.
- */
- protected String medDelay;
-
- protected String maxDelay;
-
- protected String delayUnits;
-
- protected String error;
-
- protected String errorUnits;
-
- protected String jitter;
-
- protected String jitterUnits;
-
- protected String hops;
-
- public String getSender()
- {
- return sender;
- }
-
- public void setSender(String sender)
- {
- this.sender = sender;
- }
-
- public String getReceiver()
- {
- return receiver;
- }
-
- public void setReceiver(String receiver)
- {
- this.receiver = receiver;
- }
-
- public String getSent()
- {
- return sent;
- }
-
- public void setSent(String sent)
- {
- this.sent = sent;
- }
-
- public String getLoss()
- {
- return loss;
- }
-
- public void setLoss(String loss)
- {
- this.loss = loss;
- }
-
- public String getDuplicates()
- {
- return duplicates;
- }
-
- public void setDuplicates(String duplicates)
- {
- this.duplicates = duplicates;
- }
-
- public String getLostPercent()
- {
- return lostPercent;
- }
-
- public void setLostPercent(String lostPercent)
- {
- this.lostPercent = lostPercent;
- }
-
- public String getMinDelay()
- {
- return minDelay;
- }
-
- public void setMinDelay(String minDelay)
- {
- this.minDelay = minDelay;
- }
-
- public String getMedDelay()
- {
- return medDelay;
- }
-
- public void setMedDelay(String medDelay)
- {
- this.medDelay = medDelay;
- }
-
- public String getMaxDelay()
- {
- return maxDelay;
- }
-
- public void setMaxDelay(String maxDelay)
- {
- this.maxDelay = maxDelay;
- }
-
- public String getDelayUnits()
- {
- return delayUnits;
- }
-
- public void setDelayUnits(String delayUnits)
- {
- this.delayUnits = delayUnits;
- }
-
- public String getError()
- {
- return error;
- }
-
- public void setError(String error)
- {
- this.error = error;
- }
-
- public String getErrorUnits()
- {
- return errorUnits;
- }
-
- public void setErrorUnits(String errorUnits)
- {
- this.errorUnits = errorUnits;
- }
-
- public String getJitter()
- {
- return jitter;
- }
-
- public void setJitter(String jitter)
- {
- this.jitter = jitter;
- }
-
- public String getJitterUnits()
- {
- return jitterUnits;
- }
-
- public void setJitterUnits(String jitterUnits)
- {
- this.jitterUnits = jitterUnits;
- }
-
- public String getHops()
- {
- return hops;
- }
-
- public void setHops(String hops)
- {
- this.hops = hops;
- }
-
- /**
- * The constructor initializes the variables and sets xml element
- * information (when applicable).
- */
- public OwampAggregationDatum()
- {
- sender = "";
- receiver = "";
- sent = "";
- loss = "";
- duplicates = "";
- lostPercent = "";
- minDelay = "";
- medDelay = "";
-
- parent = null;
- id = "";
- completed = false;
-
- localName = "datum";
- uri = "http://ggf.org/ns/nmwg/tools/owamp/2.0/";
- qName = "owamp:datum";
- prefix = "owamp";
- fileName =
"org/perfsonar/service/measurementArchive/sqlType/nmwg/OwampAggregationDatum.java";
- }
-
- @Override
- public boolean addAttr(String attr, String value, NamespaceSupport nss)
- {
-
-
- if (attr.equals("value")) {
- setValue(value);
- } else if (attr.equals("valueUnits")) {
- setValueUnits(value);
- } else if (attr.equals("numBytes")) {
- setNumBytes(value);
- } else if (attr.equals("numBytesUnits")) {
- setNumBytesUnits(value);
- } else if (attr.equals("sender")) {
- setSender(value);
- } else if (attr.equals("receiver")) {
- setReceiver(value);
- } else if (attr.equals("sent")) {
- setSent(value);
- } else if (attr.equals("loss")) {
- setLoss(value);
- } else if (attr.equals("lostPercent")) {
- setLostPercent(value);
- } else if (attr.equals("duplicates")) {
- setDuplicates(value);
- } else if (attr.equals("minDelay")) {
- setMinDelay(value);
- } else if (attr.equals("medDelay")) {
- setMedDelay(value);
- } else if (attr.equals("maxDelay")) {
- setMaxDelay(value);
- } else if (attr.equals("delayUnits")) {
- setDelayUnits(value);
- } else if (attr.equals("error")) {
- setError(value);
- } else if (attr.equals("errorUnits")) {
- setErrorUnits(value);
- } else if (attr.equals("jitter")) {
- setJitter(value);
- } else if (attr.equals("jitterUnits")) {
- setJitterUnits(value);
- } else if (attr.equals("hops")) {
- setHops(value);
- } else if (attr.equals("seqNum")) {
- setSeqNum(value);
- } else if (attr.equals("sendTime")) {
- setSendTime(value);
- } else if (attr.equals("sendSynchronized")) {
- setSendSynchronized(value);
- } else if (attr.equals("sendTimeError")) {
- setSendTimeError(value);
- } else if (attr.equals("receiveTime")) {
- setReceiveTime(value);
- } else if (attr.equals("receiveSynchronized")) {
- setReceiveSynchronized(value);
- } else if (attr.equals("receiveTimeError")) {
- setReceiveTimeError(value);
- } else if (attr.equals("ttl")) {
- setTTL(value);
- } else if (attr.contains("xmlns")) {
- if (attr.split(":").length == 1) {
- if (nss.getURI("") == null) {
- nss.declarePrefix("", value);
- }
- if ((prefix.isEmpty()) && !(value.equals(uri))) {
- uri = value;
- }
- } else {
- if (nss.getURI(attr.split(":")[1]) == null) {
- nss.declarePrefix(attr.split(":")[1], value);
- }
- if ((prefix.equals(attr.split(":")[1])) &&
!(value.equals(uri))) {
- uri = value;
- }
- }
- } else {
- System.err
- .println("Error: "
- + getFileName()
- + " addAttr(String, String, NamespaceSupport)
unrecognized attribute pair: "
- + attr + " - " + value);
- return false;
- }
- return true;
- }
-
- /**
- * The only allowable child for a datum element is the time.
- */
- @Override
- public boolean addChild(Element newChild)
- {
- if (newChild.getLocalName().equals("time")) {
- setTime((Time) newChild);
- } else {
- System.err.println("Error: " + getFileName()
- + " addChild(Element) unrecognized child: " + newChild);
- return false;
- }
- return true;
- }
-
- /**
- * Converts the contents of this object into an xml tag.
- */
- @Override
- public ContentHandler toXML(ContentHandler handler, NamespaceSupport nss)
- throws Exception
- {
- try {
- handler.startElement(getUri(), getLocalName(), getQName(),
- getAttributes(nss));
- handler = getChildren(handler, nss);
- handler.endElement(getUri(), getLocalName(), getQName());
-
- if (getCompleted()) {
- nss.popContext();
- unSetCompleted();
- }
- } catch (Exception e) {
- System.err
- .println("Error: "
- + getFileName()
- + " toXML(ContentHandler, NamespaceSupport) XML
formulation error.");
- }
- return handler;
- }
-
- /**
- * Converts items into attributes for an xml tag.
- */
- @Override
- public AttributesImpl getAttributes(NamespaceSupport nss)
- {
- AttributesImpl atts = new AttributesImpl();
-
- //SUMMARY DAT
- if (!(getValue().isEmpty())) {
- atts.addAttribute(getUri(), "value", "value", "CDATA",
getValue());
- }
- if (!(getValueUnits().isEmpty())) {
- atts.addAttribute(getUri(), "valueUnits", "valueUnits", "CDATA",
- getValueUnits());
- }
- if (!(getNumBytes().isEmpty())) {
- atts.addAttribute(getUri(), "numBytes", "numBytes", "CDATA",
- getNumBytes());
- }
- if (!(getNumBytesUnits().isEmpty())) {
- atts.addAttribute(getUri(), "numBytesUnits", "numBytesUnits",
- "CDATA", getNumBytesUnits());
- }
- if (!(getTimeType().isEmpty())) {
- atts.addAttribute(getUri(), "timeType", "timeType", "CDATA",
- getTimeType());
- }
- if (!(getTimeValue().isEmpty())) {
- atts.addAttribute(getUri(), "timeValue", "timeValue", "CDATA",
- getTimeValue());
- }
- /* Add Specific Attributes from here */
- if (!(getSender().isEmpty())) {
- atts.addAttribute(getUri(), "sender", "sender", "CDATA",
- getSender());
- }
- if (!(getReceiver().isEmpty())) {
- atts.addAttribute(getUri(), "receiver", "receiver", "CDATA",
- getReceiver());
- }
- if (!(getSent().isEmpty())) {
- atts.addAttribute(getUri(), "sent", "sent",
- "CDATA", getSent());
- }
- if (!(getLoss().isEmpty())) {
- atts.addAttribute(getUri(), "loss", "loss",
- "CDATA", getLoss());
- }
- if (!(getLostPercent().isEmpty())) {
- atts.addAttribute(getUri(), "lostPercent", "lostPercent",
"CDATA",
- getLostPercent());
- }
- if (!(getDuplicates().isEmpty())) {
- atts.addAttribute(getUri(), "duplicates",
- "duplicates", "CDATA", getDuplicates());
- }
- if (!(getMinDelay().isEmpty())) {
- atts.addAttribute(getUri(), "minDelay", "minDelay",
- "CDATA", getMinDelay());
- }
- if (!(getMedDelay().isEmpty())) {
- atts.addAttribute(getUri(), "medDelay", "medDelay", "CDATA",
getMedDelay());
- }
- if (!(getMaxDelay().isEmpty())) {
- atts.addAttribute(getUri(), "maxDelay", "maxDelay", "CDATA",
getMaxDelay());
- }
- if (!(getDelayUnits().isEmpty())) {
- atts.addAttribute(getUri(), "delayUnits", "delayUnits", "CDATA",
getDelayUnits());
- }
- if (!(getError().isEmpty())) {
- atts.addAttribute(getUri(), "error", "error", "CDATA",
getError());
- }
- if (!(getErrorUnits().isEmpty())) {
- atts.addAttribute(getUri(), "errorUnits", "errorUnits", "CDATA",
getErrorUnits());
- }
- if (!(getJitter().isEmpty())) {
- atts.addAttribute(getUri(), "jitter", "jitter", "CDATA",
getJitter());
- }
- if (!(getJitterUnits().isEmpty())) {
- atts.addAttribute(getUri(), "jitterUnits", "jitterUnits",
"CDATA", getJitterUnits());
- }
- if (!(getHops().isEmpty())) {
- atts.addAttribute(getUri(), "hops", "hops", "CDATA", getHops());
- }
-
- //REGULAR DATUM
- if (!(getValue().isEmpty())) {
- atts.addAttribute(getUri(), "value", "value", "CDATA",
getValue());
- }
- if (!(getValueUnits().isEmpty())) {
- atts.addAttribute(getUri(), "valueUnits", "valueUnits", "CDATA",
getValueUnits());
- }
- if (!(getNumBytes().isEmpty())) {
- atts.addAttribute(getUri(), "numBytes", "numBytes", "CDATA",
getNumBytes());
- }
- if (!(getNumBytesUnits().isEmpty())) {
- atts.addAttribute(getUri(), "numBytesUnits", "numBytesUnits",
"CDATA", getNumBytesUnits());
- }
- if (!(getTimeType().isEmpty())) {
- atts.addAttribute(getUri(), "timeType", "timeType", "CDATA",
getTimeType());
- }
- if (!(getTimeValue().isEmpty())) {
- atts.addAttribute(getUri(), "timeValue", "timeValue", "CDATA",
getTimeValue());
- }
- if (!(getSeqNum().isEmpty())) {
- atts.addAttribute(getUri(), "seqNum", "seqNum", "CDATA",
getSeqNum());
- }
- if (!(getSendTime().isEmpty())) {
- atts.addAttribute(getUri(), "sendTime", "sendTime", "CDATA",
getSendTime());
- }
- if (!(getSendSynchronized().isEmpty())) {
- atts.addAttribute(getUri(), "sendSynchronized",
"sendSynchronized", "CDATA", getSendSynchronized());
- }
- if (!(getSendTimeError().isEmpty())) {
- atts.addAttribute(getUri(), "sendTimeError", "sendTimeError",
"CDATA", getSendTimeError());
- }
- if (!(getReceiveTime().isEmpty())) {
- atts.addAttribute(getUri(), "receiveTime", "receiveTime",
"CDATA", getReceiveTime());
- }
- if (!(getReceiveSynchronized().isEmpty())) {
- atts.addAttribute(getUri(), "receiveSynchronized",
"receiveSynchronized", "CDATA",
- getReceiveSynchronized());
- }
- if (!(getReceiveTimeError().isEmpty())) {
- atts.addAttribute(getUri(), "receiveTimeError",
"receiveTimeError", "CDATA", getReceiveTimeError());
- }
- if (!(getTTL().isEmpty())) {
- atts.addAttribute(getUri(), "ttl", "ttl", "CDATA", getTTL());
- }
-
-
- if (nss.getURI(getPrefix()) == null) {
- nss.pushContext();
- if (getPrefix().isEmpty()) {
- atts.addAttribute(getUri(), "xmlns", "xmlns", "CDATA",
getUri());
- } else {
- atts.addAttribute(getUri(), "xmlns:" + getPrefix(), "xmlns:"
- + getPrefix(), "CDATA", getUri());
- }
- nss.declarePrefix(getPrefix(), getUri());
- setCompleted();
- }
-
- return atts;
- }
-
- /**
- * Chases children references down to print out all related xml tags.
- */
- @Override
- public ContentHandler getChildren(ContentHandler handler,
- NamespaceSupport nss) throws Exception
- {
- if (getTime() != null) {
- handler = getTime().toXML(handler, nss);
- }
- return handler;
- }
-
- /**
- * Given a DOM element (a parent), construct the children elements.
- */
- @Override
- public void getDOM(org.w3c.dom.Element parent)
- {
- org.w3c.dom.Document doc = parent.getOwnerDocument();
- org.w3c.dom.Element datum = doc.createElementNS(getUri(),
getQName());
- parent.appendChild(datum);
- if (!(getValue().isEmpty())) {
- datum.setAttribute("value", getValue());
- }
- if (!(getValueUnits().isEmpty())) {
- datum.setAttribute("valueUnits", getValueUnits());
- }
- if (!(getTimeType().isEmpty())) {
- datum.setAttribute("timeType", getTimeType());
- }
- if (!(getTimeValue().isEmpty())) {
- datum.setAttribute("timeValue", getTimeValue());
- }
- if (!(getNumBytes().isEmpty())) {
- datum.setAttribute("numBytes", getNumBytes());
- }
- if (!(getNumBytesUnits().isEmpty())) {
- datum.setAttribute("numBytesUnits", getNumBytesUnits());
- }
- /* Add Specific Attributes from here */
- if (!(getSent().isEmpty())) {
- datum.setAttribute("sent", getSent());
- }
- if (!(getReceiver().isEmpty())) {
- datum.setAttribute("receiver", getReceiver());
- }
- if (!(getSender().isEmpty())) {
- datum.setAttribute("sender", getSender());
- }
- if (!(getLoss().isEmpty())) {
- datum.setAttribute("loss", getLoss());
- }
- if (!(getLostPercent().isEmpty())) {
- datum.setAttribute("lostPercent", getLostPercent());
- }
- if (!(getDuplicates().isEmpty())) {
- datum.setAttribute("duplicates", getDuplicates());
- }
- if (!(getMinDelay().isEmpty())) {
- datum.setAttribute("minDelay", getMinDelay());
- }
- if (!(getMedDelay().isEmpty())) {
- datum.setAttribute("medDelay", getMedDelay());
- }
- if (!(getMaxDelay().isEmpty())) {
- datum.setAttribute("maxDelay", getMaxDelay());
- }
- if (!(getDelayUnits().isEmpty())) {
- datum.setAttribute("delayUnits", getDelayUnits());
- }
- if (!(getError().isEmpty())) {
- datum.setAttribute("error", getError());
- }
- if (!(getErrorUnits().isEmpty())) {
- datum.setAttribute("errorUnits", getErrorUnits());
- }
- if (!(getJitter().isEmpty())) {
- datum.setAttribute("jitter", getJitter());
- }
- if (!(getJitterUnits().isEmpty())) {
- datum.setAttribute("jitterUnits", getJitterUnits());
- }
- if (!(getHops().isEmpty())) {
- datum.setAttribute("hops", getHops());
- }
-
- if (getTime() != null) {
- getTime().getDOM(datum);
- }
-
-
- //REGULAR DATUM
- if (!(getSeqNum().isEmpty())) {
- datum.setAttribute("seqNum", getSeqNum());
- }
- if (!(getSendTime().isEmpty())) {
- datum.setAttribute("sendTime", getSendTime());
- }
- if (!(getSendSynchronized().isEmpty())) {
- datum.setAttribute("sendSynchronized", getSendSynchronized());
- }
- if (!(getSendTimeError().isEmpty())) {
- datum.setAttribute("sendTimeError", getSendTimeError());
- }
- if (!(getReceiveTime().isEmpty())) {
- datum.setAttribute("receiveTime", getReceiveTime());
- }
- if (!(getReceiveSynchronized().isEmpty())) {
- datum.setAttribute("receiveSynchronized",
getReceiveSynchronized());
- }
- if (!(getReceiveTimeError().isEmpty())) {
- datum.setAttribute("receiveTimeError", getReceiveTimeError());
- }
- if (!(getTTL().isEmpty())) {
- datum.setAttribute("ttl", getTTL());
- }
-
- if (getTime() != null) {
- getTime().getDOM(datum);
- }
-
- }
-
-
- @Override
- public String toString()
- {
- return getFileName() + ": ---> " + getValue() + " sender=" + sender
+ ", receiver="
- + receiver + ", sent=" + sent + ", loss=" + loss
- + ", duplicates=" + duplicates + ", lostPercent=" + lostPercent
- + ", minDelay=" + minDelay + ", medDelay=" + medDelay
- + ", maxDelay=" + maxDelay + ", delayUnits=" + delayUnits
- + ", error=" + error + ", errorUnits=" + errorUnits
- + ", jitter=" + jitter + ", jitterUnits=" + jitterUnits
- + ", hops=" + hops;
- }
-}
Added:
trunk/perfsonar-java-sql-ma/src/main/resources/db/migration/mysql/V2__Add_owamp_tables.sql
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/resources/db/migration/mysql/V2__Add_owamp_tables.sql
(rev 0)
+++
trunk/perfsonar-java-sql-ma/src/main/resources/db/migration/mysql/V2__Add_owamp_tables.sql
2012-12-20 14:21:21 UTC (rev 6075)
@@ -0,0 +1,32 @@
+CREATE TABLE
+ owamp
+ (metadataId VARCHAR(255) NOT NULL ,
+ receiveSynchronized INT(1) NOT NULL,
+ receiveTime BIGINT UNSIGNED NOT NULL,
+ receiveTimeError FLOAT NOT NULL,
+ sendSynchronized INT(1) NOT NULL,
+ sendTime BIGINT UNSIGNED NOT NULL,
+ sendTimeError FLOAT NOT NULL,
+ sequenceNumber INTEGER NOT NULL,
+ packetTTL SMALLINT NOT NULL,
+ ts TIMESTAMP DEFAULT NOW());
+
+ CREATE TABLE
+ owamp_summary
+ (metadataId VARCHAR(255) NOT NULL,
+ sender VARCHAR(255) NOT NULL,
+ receiver VARCHAR(255) NOT NULL,
+ sent INT NOT NULL,
+ loss INT NOT NULL,
+ lostPercent FLOAT NOT NULL,
+ duplicates INT NOT NULL,
+ minDelay FLOAT,
+ medDelay FLOAT,
+ maxDelay FLOAT,
+ timeType VARCHAR(10) NOT NULL,
+ startTime BIGINT NOT NULL, -- millis since epoch
+ endTime BIGINT NOT NULL, -- millis since epoch
+ maxError FLOAT,
+ jitter FLOAT,
+ hops INT NOT NULL,
+ ts TIMESTAMP DEFAULT NOW());
Deleted:
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/mysql-sqlma-dbupdate-owamp.sql
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/mysql-sqlma-dbupdate-owamp.sql
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/mysql-sqlma-dbupdate-owamp.sql
2012-12-20 14:21:21 UTC (rev 6075)
@@ -1,56 +0,0 @@
-#$Id : mysql-sqlma-dbupdate-owamp.sql
-#project: perfsonar
-#author: Piotr Pikusa
-
-# SQL Measurement Archive (MA)
-# sql script for upgrading mysql db. It updates db schema from the last
stable version (not rc) to the db schema for current version
-
-# running:
-# mysql -u root -p < /etc/mysql-sqlma-dbupdate-owamp.sql
-
-USE perfsonar_ma
-
-# Create table for OWAMP data
-CREATE TABLE
- owamp
- (metadataId VARCHAR(255) NOT NULL ,
- receiveSynchronized INT(1) NULL DEFAULT -1,
- receiveTime VARCHAR(21) NOT NULL DEFAULT '-1',
- receiveTimeError FLOAT NULL DEFAULT -1.0,
- sendSynchronized INT(1) NULL DEFAULT -1,
- sendTime VARCHAR(21) NOT NULL DEFAULT '-1',
- sendTimeError FLOAT NULL DEFAULT -1.0,
- seqNum INTEGER NULL DEFAULT -1,
- ttl SMALLINT NULL DEFAULT -1,
- ts TIMESTAMP DEFAULT NOW());
-
-INSERT
- INTO owamp
- VALUES ('owamp-meta1', 1, '15080301494633990766', 1.00583e-06, 1,
15080301494378967368, 4.91142e-05, 0, 243 ,default);
-INSERT
- INTO owamp
- VALUES ('owamp-meta1', 1, '15080301494633990766', 1.00483e-06, 1,
15080301494378967368, 4.81142e-05, 1, 243 ,default);
-
- CREATE TABLE
- owamp_agg
- (metadataId VARCHAR(255) NOT NULL,
- sender VARCHAR(255) NOT NULL DEFAULT '-1',
- receiver VARCHAR(255) NOT NULL DEFAULT '-1',
- sent INT NULL DEFAULT -1,
- loss INT NULL DEFAULT -1,
- lostPercent FLOAT NULL DEFAULT -1.0,
- duplicates INT NULL DEFAULT -1,
- minDelay FLOAT NULL DEFAULT -1.0,
- medDelay FLOAT NULL DEFAULT -1.0,
- maxDelay FLOAT NULL DEFAULT -1.0,
- delayUnits VARCHAR(10) NULL DEFAULT '-1',
- error FLOAT NULL DEFAULT -1.0,
- errorUnits VARCHAR (10) NULL DEFAULT '-1',
- jitter FLOAT NULL DEFAULT -1.0,
- jitterUnits VARCHAR(10) NULL DEFAULT '-1',
- hops INT NULL DEFAULT -1,
- ts TIMESTAMP DEFAULT NOW());
-
-INSERT
- INTO owamp_agg
- VALUES ('owamp-meta2', 'host1', 'host2', 1, 1, '10.0', 2, '1.0',
'2.0', '1.5', 'ms', '1.0', 'ms', '0.1', 'ms', 12, default);
Deleted:
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/mysql-sqlma-dbupdate-owamp_v2.sql
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/mysql-sqlma-dbupdate-owamp_v2.sql
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/mysql-sqlma-dbupdate-owamp_v2.sql
2012-12-20 14:21:21 UTC (rev 6075)
@@ -1,56 +0,0 @@
-#$Id : mysql-sqlma-dbupdate-owamp.sql
-#project: perfsonar
-#author: Piotr Pikusa
-
-# SQL Measurement Archive (MA)
-# sql script for upgrading mysql db. It updates db schema from the last
stable version (not rc) to the db schema for current version
-
-# running:
-# mysql -u root -p < /etc/mysql-sqlma-dbupdate-owamp.sql
-
-USE perfsonar_ma
-
-#Create table for OWAMP data
-CREATE TABLE
- owamp
- (metadataId VARCHAR(255) NOT NULL ,
- receiveSynchronized INT(1) NOT NULL,
- receiveTime VARCHAR(21) NOT NULL,
- receiveTimeError FLOAT NOT NULL,
- sendSynchronized INT(1) NOT NULL,
- sendTime VARCHAR(21) NOT NULL,
- sendTimeError FLOAT NOT NULL,
- seqNum INTEGER NOT NULL,
- ttl SMALLINT NOT NULL,
- ts TIMESTAMP DEFAULT NOW());
-
-INSERT
- INTO owamp
- VALUES ('owamp-meta1', 1, '15080301494633990766', 1.00583e-06, 1,
15080301494378967368, 4.91142e-05, 0, 243 ,default);
-INSERT
- INTO owamp
- VALUES ('owamp-meta1', 1, '15080301494633990766', 1.00483e-06, 1,
15080301494378967368, 4.81142e-05, 1, 243 ,default);
-
- CREATE TABLE
- owamp_agg
- (metadataId VARCHAR(255) NOT NULL,
- sender VARCHAR(255) NOT NULL,
- receiver VARCHAR(255) NOT NULL,
- sent INT NOT NULL,
- loss INT NOT NULL,
- lostPercent FLOAT NOT NULL,
- duplicates INT NOT NULL,
- minDelay FLOAT NOT NULL,
- medDelay FLOAT NOT NULL,
- maxDelay FLOAT NOT NULL,
- delayUnits VARCHAR(10) NOT NULL,
- error FLOAT NOT NULL,
- errorUnits VARCHAR (10) NOT NULL,
- jitter FLOAT NULL NOT NULL,
- jitterUnits VARCHAR(10) NOT NULL,
- hops INT NOT NULL,
- ts TIMESTAMP DEFAULT NOW());
-
-INSERT
- INTO owamp_agg
- VALUES ('owamp-meta2', 'host1', 'host2', 1, 1, '10.0', 2, '1.0',
'2.0', '1.5', 'ms', '1.0', 'ms', '0.1', 'ms', 12, default);
Modified:
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/objects.config
===================================================================
---
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/objects.config
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar-java-sql-ma/src/main/resources/perfsonar/conf/objects.config
2012-12-20 14:21:21 UTC (rev 6075)
@@ -81,7 +81,8 @@
http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/parameters/
org.ggf.ns.nmwg.tools.org.perfsonar.v1_0.Parameters
http://ggf.org/ns/nmwg/tools/owamp/2.0/subject/
org.ggf.ns.nmwg.tools.owamp.v2_0.Subject
http://ggf.org/ns/nmwg/tools/owamp/2.0/parameters/
org.perfsonar.base.nmwg.owamp.Parameters
-http://ggf.org/ns/nmwg/tools/owamp/2.0/datum/
org.perfsonar.service.measurementArchive.sqlType.nmwg.OwampAggregationDatum
+http://ggf.org/ns/nmwg/tools/owamp/2.0/datum/
org.perfsonar.base.nmwg.owamp.Datum
+http://ggf.org/ns/nmwg/characteristic/delay/summary/20070921/datum/
org.perfsonar.base.nmwg.owamp.SummaryDatum
http://ggf.org/ns/nmwg/tools/passivetracefile/2.0/subject/
org.ggf.ns.nmwg.tools.passivetracefile.v2_0.Subject
http://ggf.org/ns/nmwg/tools/passivetracefile/2.0/parameters/
org.ggf.ns.nmwg.tools.passivetracefile.v2_0.Parameters
http://ggf.org/ns/nmwg/tools/passivetracefile/2.0/datum/
org.ggf.ns.nmwg.tools.passivetracefile.v2_0.Datum
Added:
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/NmwgParameterSourceTest.java
===================================================================
---
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/NmwgParameterSourceTest.java
(rev 0)
+++
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/NmwgParameterSourceTest.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -0,0 +1,278 @@
+package org.perfsonar.service.measurementArchive.sqlType.dao;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.perfsonar.base.exceptions.PerfSONARException;
+
+import java.math.BigDecimal;
+import java.sql.Types;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+public class NmwgParameterSourceTest
+{
+ private NmwgParameterSource source;
+
+ @Before
+ public void setUp() throws Exception
+ {
+ source = new NmwgParameterSource();
+ }
+
+ @Test
+ public void integerShouldBeTrimmed() throws PerfSONARException
+ {
+ source.addIntegerAttribute("int", " 1212 ", true);
+ assertThat(source.getValue("int"), equalTo((Object) 1212));
+ }
+
+ @Test
+ public void dateShouldBeTrimmed() throws PerfSONARException
+ {
+ source.addDateAttribute("date", " Mon Dec 10 10:39:47.899 UTC 2012
", true);
+ assertThat(source.getValue("date"), equalTo((Object)
1355135987899L));
+ }
+
+ @Test
+ public void isoTimeShouldBeTrimmed() throws PerfSONARException
+ {
+ source.addIsoTimeAttribute("iso", " 2012-12-10T10:39:47Z ", true);
+ assertThat(source.getValue("iso"), equalTo((Object) 1355135987L));
+ }
+
+ @Test
+ public void stringShouldBeTrimmed() throws PerfSONARException
+ {
+ source.addStringAttribute("string", " foobar ", true);
+ assertThat(source.getValue("string"), equalTo((Object) "foobar"));
+ }
+
+ @Test
+ public void bigDecimalShouldBeTrimmed() throws PerfSONARException
+ {
+ source.addBigDecimalAttribute("bigdecimal", " 1212 ", true);
+ assertThat(source.getValue("bigdecimal"), equalTo((Object) new
BigDecimal(1212)));
+ }
+
+ @Test
+ public void floatShouldBeTrimmed() throws PerfSONARException
+ {
+ source.addFloatAttribute("float", " 1212.2 ", true);
+ assertThat(source.getValue("float"), equalTo((Object) 1212.2F));
+ }
+
+ @Test
+ public void longShouldBeTrimmed() throws PerfSONARException
+ {
+ source.addLongAttribute("long", " 1212 ", true);
+ assertThat(source.getValue("long"), equalTo((Object) 1212L));
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredIntegerShouldFailOnNull() throws PerfSONARException
+ {
+ source.addIntegerAttribute("int", null, true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredLongShouldFailOnNull() throws PerfSONARException
+ {
+ source.addLongAttribute("long", null, true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredFloatShouldFailOnNull() throws PerfSONARException
+ {
+ source.addFloatAttribute("float", null, true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredBigDecimalShouldFailOnNull() throws
PerfSONARException
+ {
+ source.addBigDecimalAttribute("big", null, true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredStringShouldFailOnNull() throws PerfSONARException
+ {
+ source.addStringAttribute("string", null, true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredIsoTimeShouldFailOnNull() throws PerfSONARException
+ {
+ source.addIsoTimeAttribute("iso", null, true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredDateShouldFailOnNull() throws PerfSONARException
+ {
+ source.addDateAttribute("date", null, true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredIntegerShouldFailOnEmpty() throws PerfSONARException
+ {
+ source.addIntegerAttribute("int", " ", true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredLongShouldFailOnEmpty() throws PerfSONARException
+ {
+ source.addLongAttribute("long", " ", true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredFloatShouldFailOnEmpty() throws PerfSONARException
+ {
+ source.addFloatAttribute("float", " ", true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredBigDecimalShouldFailOnEmpty() throws
PerfSONARException
+ {
+ source.addBigDecimalAttribute("big", " ", true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredStringShouldFailOnEmpty() throws PerfSONARException
+ {
+ source.addStringAttribute("string", " ", true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredIsoTimeShouldFailOnEmpty() throws PerfSONARException
+ {
+ source.addIsoTimeAttribute("iso", " ", true);
+ }
+
+ @Test(expected=PerfSONARException.class)
+ public void requiredDateShouldFailOnEmpty() throws PerfSONARException
+ {
+ source.addDateAttribute("date", " ", true);
+ }
+
+ @Test()
+ public void optionalIntegerShouldBeNullOnNull() throws PerfSONARException
+ {
+ source.addIntegerAttribute("int", null, false);
+ assertThat(source.getValue("int"), is(nullValue()));
+ }
+
+ @Test()
+ public void optionalLongShouldBeNullOnNull() throws PerfSONARException
+ {
+ source.addLongAttribute("long", null, false);
+ assertThat(source.getValue("long"), is(nullValue()));
+ }
+
+ @Test()
+ public void optionalFloatShouldBeNullOnNull() throws PerfSONARException
+ {
+ source.addFloatAttribute("float", null, false);
+ assertThat(source.getValue("float"), is(nullValue()));
+ }
+
+ @Test()
+ public void optionalBigDecimalShouldBeNullOnNull() throws
PerfSONARException
+ {
+ source.addBigDecimalAttribute("big", null, false);
+ assertThat(source.getValue("big"), is(nullValue()));
+ }
+
+ @Test()
+ public void optionalStringShouldBeNullOnNull() throws PerfSONARException
+ {
+ source.addStringAttribute("string", null, false);
+ assertThat(source.getValue("string"), is(nullValue()));
+ }
+
+ @Test()
+ public void optionalIsoTimeShouldBeNullOnNull() throws PerfSONARException
+ {
+ source.addIsoTimeAttribute("iso", null, false);
+ assertThat(source.getValue("iso"), is(nullValue()));
+ }
+
+ @Test()
+ public void optionalDateShouldBeNullOnNull() throws PerfSONARException
+ {
+ source.addDateAttribute("date", null, false);
+ assertThat(source.getValue("date"), is(nullValue()));
+ }
+
+ @Test
+ public void dateShouldAcceptInputWithoutMillis() throws
PerfSONARException
+ {
+ source.addDateAttribute("date", " Mon Dec 10 10:39:47 UTC 2012 ",
true);
+ assertThat(source.getValue("date"), equalTo((Object)
1355135987000L));
+ }
+
+ @Test
+ public void dateShouldAcceptInputWithMillis() throws PerfSONARException
+ {
+ source.addDateAttribute("date", " Mon Dec 10 10:39:47.899 UTC 2012
", true);
+ assertThat(source.getValue("date"), equalTo((Object)
1355135987899L));
+ }
+
+ @Test
+ public void floatShouldRepresentNanAsNull() throws PerfSONARException
+ {
+ source.addFloatAttribute("float", "NaN", true);
+ assertThat(source.getValue("float"), is(nullValue()));
+ }
+
+ @Test
+ public void integerShouldMapToInteger() throws PerfSONARException
+ {
+ source.addIntegerAttribute("int", " 1212 ", true);
+ assertThat(source.getSqlType("int"), is(Types.INTEGER));
+ }
+
+ @Test
+ public void dateShouldMapToBigInt() throws PerfSONARException
+ {
+ source.addDateAttribute("date", " Mon Dec 10 10:39:47.899 UTC 2012
", true);
+ assertThat(source.getSqlType("date"), is(Types.BIGINT));
+ }
+
+ @Test
+ public void stringShouldMapToVarChar() throws PerfSONARException
+ {
+ source.addStringAttribute("string", " foobar ", true);
+ assertThat(source.getSqlType("string"), is(Types.VARCHAR));
+ }
+
+ @Test
+ public void bigDecimalShouldMapToDecimal() throws PerfSONARException
+ {
+ source.addBigDecimalAttribute("bigdecimal", " 1212 ", true);
+ assertThat(source.getSqlType("bigdecimal"), is(Types.DECIMAL));
+ }
+
+ @Test
+ public void isoTimeShouldMapToBigInt() throws PerfSONARException
+ {
+ source.addIsoTimeAttribute("iso", " 2012-12-10T10:39:47Z ", true);
+ assertThat(source.getSqlType("iso"), is(Types.BIGINT));
+ }
+
+ @Test
+ public void floatShouldMapToFloat() throws PerfSONARException
+ {
+ source.addFloatAttribute("float", " 1212.2 ", true);
+ assertThat(source.getSqlType("float"), is(Types.FLOAT));
+ }
+
+ @Test
+ public void longShouldMapToBigInt() throws PerfSONARException
+ {
+ source.addLongAttribute("long", " 1212 ", true);
+ assertThat(source.getSqlType("long"), is(Types.BIGINT));
+ }
+
+
+}
Added:
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/ParseUtilsTest.java
===================================================================
---
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/ParseUtilsTest.java
(rev 0)
+++
trunk/perfsonar-java-sql-ma/src/test/java/org/perfsonar/service/measurementArchive/sqlType/dao/ParseUtilsTest.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -0,0 +1,139 @@
+package org.perfsonar.service.measurementArchive.sqlType.dao;
+
+import com.google.common.base.Optional;
+import org.junit.Test;
+import org.perfsonar.base.exceptions.PerfSONARException;
+
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class ParseUtilsTest
+{
+ @Test
+ public void trimShouldReturnTrimmedString() throws PerfSONARException
+ {
+ assertThat(ParseUtils.trim(" a string "), equalTo(Optional.of(" a
string ".trim())));
+ }
+
+ @Test
+ public void trimShouldReturnAbsentOnNull() throws PerfSONARException
+ {
+ assertThat(ParseUtils.trim(null),
equalTo(Optional.<String>absent()));
+ }
+
+ @Test
+ public void trimShouldReturnAbsentOnWhitespace() throws
PerfSONARException
+ {
+ assertThat(ParseUtils.trim(" "),
equalTo(Optional.<String>absent()));
+ }
+
+ @Test
+ public void parseBigDecimalShouldParseIntegers() throws
PerfSONARException
+ {
+ assertThat(ParseUtils.parseBigDecimal("12345678901234567890"),
+ equalTo(Optional.of(new
BigDecimal("12345678901234567890"))));
+ }
+
+ @Test
+ public void parseBigDecimalShouldReturnAbsentOnNull() throws
PerfSONARException
+ {
+ assertThat(ParseUtils.parseBigDecimal(null),
+ equalTo(Optional.<BigDecimal>absent()));
+ }
+
+ @Test(expected = PerfSONARException.class)
+ public void parseBigDecimalShouldThrowPerfSONARExceptionOnError() throws
PerfSONARException
+ {
+ ParseUtils.parseBigDecimal("error");
+ }
+
+ @Test
+ public void parseIntegerShouldParseIntegers() throws PerfSONARException
+ {
+ assertThat(ParseUtils.parseInteger("12345"),
+ equalTo(Optional.of(12345)));
+ }
+
+ @Test
+ public void parseIntegerShouldReturnAbsentOnNull() throws
PerfSONARException
+ {
+ assertThat(ParseUtils.parseInteger(null),
+ equalTo(Optional.<Integer>absent()));
+ }
+
+ @Test(expected = PerfSONARException.class)
+ public void parseIntegerShouldThrowPerfSONARExceptionOnError() throws
PerfSONARException
+ {
+ ParseUtils.parseInteger("error");
+ }
+
+ @Test
+ public void parseLongShouldParseLongs() throws PerfSONARException
+ {
+ assertThat(ParseUtils.parseLong("1234567890123456789"),
+ equalTo(Optional.of(1234567890123456789L)));
+ }
+
+ @Test
+ public void parseLongShouldReturnAbsentOnNull() throws PerfSONARException
+ {
+ assertThat(ParseUtils.parseLong(null),
+ equalTo(Optional.<Long>absent()));
+ }
+
+ @Test(expected = PerfSONARException.class)
+ public void parseLongShouldThrowPerfSONARExceptionOnError() throws
PerfSONARException
+ {
+ ParseUtils.parseLong("error");
+ }
+
+ @Test
+ public void parseFloatShouldParseFloats() throws PerfSONARException
+ {
+ assertThat(ParseUtils.parseFloat("1.23"),
+ equalTo(Optional.of(1.23F)));
+ }
+
+ @Test
+ public void parseFloatShouldReturnAbsentOnNull() throws
PerfSONARException
+ {
+ assertThat(ParseUtils.parseFloat(null),
+ equalTo(Optional.<Float>absent()));
+ }
+
+ @Test(expected = PerfSONARException.class)
+ public void parseFloatShouldThrowPerfSONARExceptionOnError() throws
PerfSONARException
+ {
+ ParseUtils.parseFloat("error");
+ }
+
+ @Test
+ public void parseDateToStringShouldAcceptOptionalMilliseconds() throws
PerfSONARException
+ {
+ assertThat(ParseUtils.parseDateToString("Mon Dec 10 10:39:47.899 UTC
2012"),
+ equalTo(Optional.of(1355135987899L)));
+ assertThat(ParseUtils.parseDateToString("Mon Dec 10 10:39:47 UTC
2012"),
+ equalTo(Optional.of(1355135987000L)));
+
+ }
+
+ @Test
+ public void parseDateToStringShouldReturnAbsentOnNull() throws
PerfSONARException
+ {
+ assertThat(ParseUtils.parseDateToString(null),
+ equalTo(Optional.<Long>absent()));
+ }
+
+ @Test(expected = PerfSONARException.class)
+ public void parseDateToStringShouldThrowPerfSONARExceptionOnError()
throws PerfSONARException
+ {
+ ParseUtils.parseDateToString("error");
+ }
+}
Added:
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/Datum.java
===================================================================
---
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/Datum.java
(rev 0)
+++
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/Datum.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -0,0 +1,467 @@
+/**
+ * This describes the datum format of a ping measurement.
+ *
+ * @author Fausto Vetter
+ * @version $Id: Datum.java 189 2007-01-31 20:46:21Z boote $
+ * @see org.ggf.ns.nmwg.base.v2_0.Element
+ * @see org.ggf.ns.nmwg.base.v2_0.Datum
+ * @see org.ggf.ns.nmwg.time.v2_0.Time
+ * @see org.w3c.dom.Document
+ * @see org.w3c.dom.Element
+ */
+package org.perfsonar.base.nmwg.owamp;
+
+import org.ggf.ns.nmwg.base.v2_0.Element;
+import org.ggf.ns.nmwg.time.v2_0.Time;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.NamespaceSupport;
+
+public class Datum extends org.ggf.ns.nmwg.base.v2_0.Datum
+{
+ /**
+ * attribute for SEQNO (Sequence number).
+ */
+ protected String sequenceNumber;
+
+ /**
+ * attribute for SENDTIME (Send timestamp).
+ */
+ protected String sendTime;
+
+ /**
+ * attribute for SSYNC (Sending system synchronized (0 or 1)).
+ */
+ protected String sendSynchronized;
+
+ /**
+ * attribute for SERR (Estimate of SENDTIME error).
+ */
+ protected String sendTimeError;
+
+ /**
+ * attribute for RECVTIME (Receive timestamp).
+ */
+ protected String receiveTime;
+
+ /**
+ * attribute for RSYNC (Receiving system synchronized (0 or 1)).
+ */
+ protected String receiveSynchronized;
+
+ /**
+ * attribute for RERR (Estimate of RECVTIME error).
+ */
+ protected String receiveTimeError;
+
+ /**
+ * attribute for TTL (TTL IP field).
+ */
+ protected String packetTTL;
+
+ /**
+ * The constructor initializes the variables and
+ * sets xml element information (when applicable).
+ */
+ public Datum()
+ {
+ sequenceNumber = "";
+ sendTime = "";
+ sendSynchronized = "";
+ sendTimeError = "";
+ receiveTime = "";
+ receiveSynchronized = "";
+ receiveTimeError = "";
+ packetTTL = "";
+
+ parent = null;
+ id = "";
+ completed = false;
+
+ localName = "datum";
+ uri = "http://ggf.org/ns/nmwg/tools/owamp/2.0/";
+ qName = "owamp:datum";
+ prefix = "owamp";
+ fileName = "org/perfsonar/base/nmwg/owamp/Datum.java";
+ }
+
+ /**
+ * Returns the value of the sequenceNumber attribute.
+ */
+ public String getSequenceNumber()
+ {
+ return sequenceNumber;
+ }
+
+ /**
+ * Sets the sequenceNumber attribute.
+ */
+ public void setSequenceNumber(String newSeqNum)
+ {
+ sequenceNumber = newSeqNum;
+ }
+
+ /**
+ * Returns the value of the sendTime attribute.
+ */
+ public String getSendTime()
+ {
+ return sendTime;
+ }
+
+ /**
+ * Sets the sendTime attribute.
+ */
+ public void setSendTime(String newSendTime)
+ {
+ sendTime = newSendTime;
+ }
+
+ /**
+ * Returns the value of the sendSynchronized attribute.
+ */
+ public String getSendSynchronized()
+ {
+ return sendSynchronized;
+ }
+
+ /**
+ * Sets the sendSynchronized attribute.
+ */
+ public void setSendSynchronized(String newSendSynchronized)
+ {
+ sendSynchronized = newSendSynchronized;
+ }
+
+ /**
+ * Returns the value of the sendTimeError attribute.
+ */
+ public String getSendTimeError()
+ {
+ return sendTimeError;
+ }
+
+ /**
+ * Sets the sendTimeError attribute.
+ */
+ public void setSendTimeError(String newSendTimeError)
+ {
+ sendTimeError = newSendTimeError;
+ }
+
+ /**
+ * Returns the value of the receiveTime attribute.
+ */
+ public String getReceiveTime()
+ {
+ return receiveTime;
+ }
+
+ /**
+ * Sets the receiveTime attribute.
+ */
+ public void setReceiveTime(String newReceiveTime)
+ {
+ receiveTime = newReceiveTime;
+ }
+
+ /**
+ * Returns the value of the receiveSynchronized attribute.
+ */
+ public String getReceiveSynchronized()
+ {
+ return receiveSynchronized;
+ }
+
+ /**
+ * Sets the receiveSynchronized attribute.
+ */
+ public void setReceiveSynchronized(String newReceiveSynchronized)
+ {
+ receiveSynchronized = newReceiveSynchronized;
+ }
+
+ /**
+ * Returns the value of the receiveTimeError attribute.
+ */
+ public String getReceiveTimeError()
+ {
+ return receiveTimeError;
+ }
+
+ /**
+ * Sets the receiveTimeError attribute.
+ */
+ public void setReceiveTimeError(String newReceiveTimeError)
+ {
+ receiveTimeError = newReceiveTimeError;
+ }
+
+ /**
+ * Returns the value of the TTL attribute.
+ */
+ public String getPacketTTL()
+ {
+ return packetTTL;
+ }
+
+ /**
+ * Sets the TTL attribute.
+ */
+ public void setPacketTTL(String newTTL)
+ {
+ packetTTL = newTTL;
+ }
+
+ /**
+ * Sets attributes, it is important to note that we
+ * access the underlying NMWG Datum information from the
+ * base.
+ */
+ public boolean addAttr(String attr, String value, NamespaceSupport nss)
+ {
+ if (attr.equals("value")) {
+ setValue(value);
+ } else if (attr.equals("valueUnits")) {
+ setValueUnits(value);
+ } else if (attr.equals("numBytes")) {
+ setNumBytes(value);
+ } else if (attr.equals("numBytesUnits")) {
+ setNumBytesUnits(value);
+ } else if (attr.equals("timeType")) {
+ setTimeType(value);
+ } else if (attr.equals("timeValue")) {
+ setTimeValue(value);
+ } else /* Add Specific Attributes from here */ if
(attr.equals("sequenceNumber")) {
+ setSequenceNumber(value);
+ } else if (attr.equals("sendTime")) {
+ setSendTime(value);
+ } else if (attr.equals("sendSynchronized")) {
+ setSendSynchronized(value);
+ } else if (attr.equals("sendTimeError")) {
+ setSendTimeError(value);
+ } else if (attr.equals("receiveTime")) {
+ setReceiveTime(value);
+ } else if (attr.equals("receiveSynchronized")) {
+ setReceiveSynchronized(value);
+ } else if (attr.equals("receiveTimeError")) {
+ setReceiveTimeError(value);
+ } else if (attr.equals("packetTTL")) {
+ setPacketTTL(value);
+ } else if (attr.indexOf("xmlns") >= 0) {
+ if (attr.split(":").length == 1) {
+ if (nss.getURI("") == null) {
+ nss.declarePrefix("", value);
+ }
+ if ((prefix.equals("")) && !(value.equals(uri))) {
+ uri = value;
+ }
+ } else {
+ if (nss.getURI(attr.split(":")[1]) == null) {
+ nss.declarePrefix(attr.split(":")[1], value);
+ }
+ if ((prefix.equals(attr.split(":")[1])) &&
!(value.equals(uri))) {
+ uri = value;
+ }
+ }
+ } else {
+ System.err.println("Error: " + getFileName() + " addAttr(String,
String, NamespaceSupport) unrecognized "
+ + "attribute pair: " + attr + " - " +
value);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * The only allowable child for a datum element is the
+ * time.
+ */
+ public boolean addChild(Element newChild)
+ {
+ if (newChild.getLocalName().equals("time")) {
+ setTime((Time) newChild);
+ } else {
+ System.err.println("Error: " + getFileName() + "
addChild(Element) unrecognized child: " + newChild);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Converts the contents of this object into an xml tag.
+ */
+ public ContentHandler toXML(ContentHandler handler, NamespaceSupport
nss) throws Exception
+ {
+ try {
+ handler.startElement(getUri(), getLocalName(), getQName(),
getAttributes(nss));
+ handler = getChildren(handler, nss);
+ handler.endElement(getUri(), getLocalName(), getQName());
+
+ if (getCompleted()) {
+ nss.popContext();
+ unSetCompleted();
+ }
+ } catch (Exception e) {
+ System.err.println(
+ "Error: " + getFileName() + " toXML(ContentHandler,
NamespaceSupport) XML formulation error.");
+ }
+ return handler;
+ }
+
+ /**
+ * Converts items into attributes for an xml tag.
+ */
+ public AttributesImpl getAttributes(NamespaceSupport nss)
+ {
+ AttributesImpl atts = new AttributesImpl();
+
+ if (!(getValue().equals(""))) {
+ atts.addAttribute(getUri(), "value", "value", "CDATA",
getValue());
+ }
+ if (!(getValueUnits().equals(""))) {
+ atts.addAttribute(getUri(), "valueUnits", "valueUnits", "CDATA",
getValueUnits());
+ }
+ if (!(getNumBytes().equals(""))) {
+ atts.addAttribute(getUri(), "numBytes", "numBytes", "CDATA",
getNumBytes());
+ }
+ if (!(getNumBytesUnits().equals(""))) {
+ atts.addAttribute(getUri(), "numBytesUnits", "numBytesUnits",
"CDATA", getNumBytesUnits());
+ }
+ if (!(getTimeType().equals(""))) {
+ atts.addAttribute(getUri(), "timeType", "timeType", "CDATA",
getTimeType());
+ }
+ if (!(getTimeValue().equals(""))) {
+ atts.addAttribute(getUri(), "timeValue", "timeValue", "CDATA",
getTimeValue());
+ }
+ /* Add Specific Attributes from here */
+ if (!(getSequenceNumber().equals(""))) {
+ atts.addAttribute(getUri(), "sequenceNumber", "sequenceNumber",
"CDATA", getSequenceNumber());
+ }
+ if (!(getSendTime().equals(""))) {
+ atts.addAttribute(getUri(), "sendTime", "sendTime", "CDATA",
getSendTime());
+ }
+ if (!(getSendSynchronized().equals(""))) {
+ atts.addAttribute(getUri(), "sendSynchronized",
"sendSynchronized", "CDATA", getSendSynchronized());
+ }
+ if (!(getSendTimeError().equals(""))) {
+ atts.addAttribute(getUri(), "sendTimeError", "sendTimeError",
"CDATA", getSendTimeError());
+ }
+ if (!(getReceiveTime().equals(""))) {
+ atts.addAttribute(getUri(), "receiveTime", "receiveTime",
"CDATA", getReceiveTime());
+ }
+ if (!(getReceiveSynchronized().equals(""))) {
+ atts.addAttribute(getUri(), "receiveSynchronized",
"receiveSynchronized", "CDATA",
+ getReceiveSynchronized());
+ }
+ if (!(getReceiveTimeError().equals(""))) {
+ atts.addAttribute(getUri(), "receiveTimeError",
"receiveTimeError", "CDATA", getReceiveTimeError());
+ }
+ if (!(getPacketTTL().equals(""))) {
+ atts.addAttribute(getUri(), "packetTTL", "packetTTL", "CDATA",
getPacketTTL());
+ }
+ if (nss.getURI(getPrefix()) == null) {
+ nss.pushContext();
+ if (getPrefix().equals("")) {
+ atts.addAttribute(getUri(), "xmlns", "xmlns", "CDATA",
getUri());
+ } else {
+ atts.addAttribute(getUri(), "xmlns:" + getPrefix(), "xmlns:"
+ getPrefix(), "CDATA", getUri());
+ }
+ nss.declarePrefix(getPrefix(), getUri());
+ setCompleted();
+ }
+
+ return atts;
+ }
+
+ /**
+ * Chases children references down to print out all related xml tags.
+ */
+ public ContentHandler getChildren(ContentHandler handler,
NamespaceSupport nss) throws Exception
+ {
+ if (getTime() != null) {
+ handler = getTime().toXML(handler, nss);
+ }
+ return handler;
+ }
+
+ /**
+ * Given a DOM element (a parent), construct
+ * the children elements.
+ */
+ public void getDOM(org.w3c.dom.Element parent)
+ {
+ org.w3c.dom.Document doc = parent.getOwnerDocument();
+ org.w3c.dom.Element datum = doc.createElementNS(getUri(),
getQName());
+ parent.appendChild(datum);
+ if (!(getValue().equals(""))) {
+ datum.setAttribute("value", getValue());
+ }
+ if (!(getValueUnits().equals(""))) {
+ datum.setAttribute("valueUnits", getValueUnits());
+ }
+ if (!(getTimeType().equals(""))) {
+ datum.setAttribute("timeType", getTimeType());
+ }
+ if (!(getTimeValue().equals(""))) {
+ datum.setAttribute("timeValue", getTimeValue());
+ }
+ if (!(getNumBytes().equals(""))) {
+ datum.setAttribute("numBytes", getNumBytes());
+ }
+ if (!(getNumBytesUnits().equals(""))) {
+ datum.setAttribute("numBytesUnits", getNumBytesUnits());
+ }
+ /* Add Specific Attributes from here */
+ if (!(getSequenceNumber().equals(""))) {
+ datum.setAttribute("sequenceNumber", getSequenceNumber());
+ }
+ if (!(getSendTime().equals(""))) {
+ datum.setAttribute("sendTime", getSendTime());
+ }
+ if (!(getSendSynchronized().equals(""))) {
+ datum.setAttribute("sendSynchronized", getSendSynchronized());
+ }
+ if (!(getSendTimeError().equals(""))) {
+ datum.setAttribute("sendTimeError", getSendTimeError());
+ }
+ if (!(getReceiveTime().equals(""))) {
+ datum.setAttribute("receiveTime", getReceiveTime());
+ }
+ if (!(getReceiveSynchronized().equals(""))) {
+ datum.setAttribute("receiveSynchronized",
getReceiveSynchronized());
+ }
+ if (!(getReceiveTimeError().equals(""))) {
+ datum.setAttribute("receiveTimeError", getReceiveTimeError());
+ }
+ if (!(getPacketTTL().equals(""))) {
+ datum.setAttribute("packetTTL", getPacketTTL());
+ }
+
+ if (getTime() != null) {
+ getTime().getDOM(datum);
+ }
+ }
+
+ /**
+ * Called when the object is placed in
+ * an output statement.
+ */
+ public String toString()
+ {
+ return getFileName() + ": ---> " + getValue()
+ + " sequenceNumber:" + getSequenceNumber()
+ + " sendTime:" + getSendTime()
+ + " sendSynchronized:" + getSendSynchronized()
+ + " sendTimeError:" + getSendTimeError()
+ + " receiveTime:" + getReceiveTime()
+ + " receiveSynchronized:" + getReceiveSynchronized()
+ + " receiveTimeError:" + getReceiveTimeError()
+ + " numBytes:" + getNumBytes()
+ + " numBytesUnits:" + getNumBytesUnits()
+ + " packetTTL:" + getPacketTTL()
+ + " valueUnits:" + getValueUnits()
+ + " timeType:" + getTimeType()
+ + " timeValue:" + getTimeValue() + getTime();
+ }
+}
+
Modified:
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/Parameters.java
===================================================================
---
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/Parameters.java
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/Parameters.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -30,7 +30,7 @@
uri = "http://ggf.org/ns/nmwg/tools/owamp/2.0/";
qName = "owamp:parameters";
prefix = "owamp";
- fileName = "org/ggf/ns/nmwg/tools/owamp/v2_0/Parameters.java";
+ fileName = "org/perfsonar/base/nmwg/owamp/Parameters.java";
}
/**
@@ -41,15 +41,21 @@
{
if (!(name.isEmpty())) {
if (name.equals("count")
- || name.equals("dscp")
+ || name.equals("timeout")
+ || name.equals("size")
+ || name.equals("percentile")
+ || name.equals("DSCP")
+ || name.equals("enddelay")
+ || name.equals("startdelay")
+ || name.equals("bucket_width")
+ || name.equals("intermediates")
+ || name.equals("portrange")
+ || name.equals("units")
+ || name.equals("one-way")
+ || name.equals("output")
|| name.equals("phb")
|| name.equals("wait")
- || name.equals("timeOut")
|| name.equals("padding")
- || name.equals("endDelay")
- || name.equals("portRange")
- || name.equals("size")
- || name.equals("output")
|| name.equals("direction")) {
Parameter p = (Parameter) parameterMap.get(name);
return (p);
@@ -74,17 +80,23 @@
{
if (newParameter != null) {
if (newParameter.getParameterName().equals("count")
- || newParameter.getParameterName().equals("dscp")
+ || newParameter.getParameterName().equals("timeout")
+ || newParameter.getParameterName().equals("size")
+ || newParameter.getParameterName().equals("percentile")
+ || newParameter.getParameterName().equals("DSCP")
+ || newParameter.getParameterName().equals("enddelay")
+ || newParameter.getParameterName().equals("startdelay")
+ || newParameter.getParameterName().equals("bucket_width")
+ || newParameter.getParameterName().equals("intermediates")
+ || newParameter.getParameterName().equals("portrange")
+ || newParameter.getParameterName().equals("units")
+ || newParameter.getParameterName().equals("one-way")
+ || newParameter.getParameterName().equals("output")
|| newParameter.getParameterName().equals("phb")
|| newParameter.getParameterName().equals("wait")
- || newParameter.getParameterName().equals("timeOut")
|| newParameter.getParameterName().equals("padding")
- || newParameter.getParameterName().equals("direction")
- || newParameter.getParameterName().equals("size")
- || newParameter.getParameterName().equals("output")
- || newParameter.getParameterName().equals("portRange")
- || newParameter.getParameterName().equals("endDelay")) {
- if (getParameterByName(newParameter.getParameterName()) !=
null) {
+ || newParameter.getParameterName().equals("direction")) {
+ if (getParameterByName(newParameter.getParameterName()) != null)
{
System.err.println("Error: " + getFileName()
+ " 'setParameter(Parameter)'
Duplicate parameter"
+ " name: " +
newParameter.getParameterName()
@@ -108,15 +120,21 @@
{
if (!(name.isEmpty()) && !(value.isEmpty())) {
if (name.equals("count")
- || name.equals("dscp")
+ || name.equals("timeout")
+ || name.equals("size")
+ || name.equals("percentile")
+ || name.equals("DSCP")
+ || name.equals("enddelay")
+ || name.equals("startdelay")
+ || name.equals("bucket_width")
+ || name.equals("intermediates")
+ || name.equals("portrange")
+ || name.equals("units")
+ || name.equals("one-way")
+ || name.equals("output")
|| name.equals("phb")
|| name.equals("wait")
- || name.equals("timeOut")
|| name.equals("padding")
- || name.equals("endDelay")
- || name.equals("portRange")
- || name.equals("size")
- || name.equals("output")
|| name.equals("direction")) {
Parameter p = new Parameter();
p.setParameterName(name);
Added:
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/SummaryDatum.java
===================================================================
---
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/SummaryDatum.java
(rev 0)
+++
trunk/perfsonar_base/src/main/java/org/perfsonar/base/nmwg/owamp/SummaryDatum.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -0,0 +1,561 @@
+package org.perfsonar.base.nmwg.owamp;
+
+import org.ggf.ns.nmwg.base.v2_0.Element;
+import org.ggf.ns.nmwg.time.v2_0.Time;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.NamespaceSupport;
+
+public class SummaryDatum extends org.ggf.ns.nmwg.base.v2_0.Datum
+{
+ /**
+ * attribute for SENDER.
+ */
+ protected String sender;
+
+ /**
+ * attribute for RECEIVER.
+ */
+ protected String receiver;
+
+ /**
+ * attribute for SENT.
+ */
+ protected String sent;
+
+ /**
+ * attribute for LOSS.
+ */
+ protected String loss;
+
+ /**
+ * attribute for LOST_PERCENT.
+ */
+ protected String lostPercent;
+
+ /**
+ * attribute for DUPLICATES.
+ */
+ protected String duplicates;
+
+ /**
+ * attribute for MIN_DELAY.
+ */
+ protected String minDelay;
+
+ /**
+ * attribute for MED_DELAY.
+ */
+ protected String medDelay;
+
+ /**
+ * attribute for MAX_DELAY.
+ */
+ protected String maxDelay;
+
+ /**
+ * attribute for STARTTIME.
+ */
+ protected String startTime;
+
+ /**
+ * attribute for ENDTIME.
+ */
+ protected String endTime;
+
+ /**
+ * attribute for MAXERROR.
+ */
+ protected String maxError;
+
+ /**
+ * attribute for JITTER.
+ */
+ protected String jitter;
+
+ /**
+ * attribute for HOPS.
+ */
+ protected String hops;
+
+ /**
+ * The constructor initializes the variables and
+ * sets xml element information (when applicable).
+ */
+ public SummaryDatum()
+ {
+ sender = "";
+ receiver = "";
+ sent = "";
+ loss = "";
+ lostPercent = "";
+ duplicates = "";
+ minDelay = "";
+ medDelay = "";
+ maxDelay = "";
+ timeType = "";
+ startTime = "";
+ endTime = "";
+ maxError = "";
+ jitter = "";
+ hops = "";
+
+ parent = null;
+ id = "";
+ completed = false;
+
+ localName = "datum";
+ uri =
"http://ggf.org/ns/nmwg/characteristic/delay/summary/20070921/";
+ qName = "owamp:datum";
+ prefix = "owamp";
+ fileName = "org/perfsonar/base/nmwg/owamp/SummaryDatum.java";
+ }
+
+ public String getSender()
+ {
+ return sender;
+ }
+
+ public void setSender(String sender)
+ {
+ this.sender = sender;
+ }
+
+ public String getReceiver()
+ {
+ return receiver;
+ }
+
+ public void setReceiver(String receiver)
+ {
+ this.receiver = receiver;
+ }
+
+ public String getSent()
+ {
+ return sent;
+ }
+
+ public void setSent(String sent)
+ {
+ this.sent = sent;
+ }
+
+ public String getLoss()
+ {
+ return loss;
+ }
+
+ public void setLoss(String loss)
+ {
+ this.loss = loss;
+ }
+
+ public String getLostPercent()
+ {
+ return lostPercent;
+ }
+
+ public void setLostPercent(String lostPercent)
+ {
+ this.lostPercent = lostPercent;
+ }
+
+ public String getDuplicates()
+ {
+ return duplicates;
+ }
+
+ public void setDuplicates(String duplicates)
+ {
+ this.duplicates = duplicates;
+ }
+
+ public String getMinDelay()
+ {
+ return minDelay;
+ }
+
+ public void setMinDelay(String minDelay)
+ {
+ this.minDelay = minDelay;
+ }
+
+ public String getMedDelay()
+ {
+ return medDelay;
+ }
+
+ public void setMedDelay(String medDelay)
+ {
+ this.medDelay = medDelay;
+ }
+
+ public String getMaxDelay()
+ {
+ return maxDelay;
+ }
+
+ public void setMaxDelay(String maxDelay)
+ {
+ this.maxDelay = maxDelay;
+ }
+
+ public String getStartTime()
+ {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime)
+ {
+ this.startTime = startTime;
+ }
+
+ public String getEndTime()
+ {
+ return endTime;
+ }
+
+ public void setEndTime(String endTime)
+ {
+ this.endTime = endTime;
+ }
+
+ public String getMaxError()
+ {
+ return maxError;
+ }
+
+ public void setMaxError(String maxError)
+ {
+ this.maxError = maxError;
+ }
+
+ public String getJitter()
+ {
+ return jitter;
+ }
+
+ public void setJitter(String jitter)
+ {
+ this.jitter = jitter;
+ }
+
+ public String getHops()
+ {
+ return hops;
+ }
+
+ public void setHops(String hops)
+ {
+ this.hops = hops;
+ }
+
+ /**
+ * Sets attributes, it is important to note that we
+ * access the underlying NMWG Datum information from the
+ * base.
+ */
+ public boolean addAttr(String attr, String value, NamespaceSupport nss)
+ {
+ if (attr.equals("value")) {
+ setValue(value);
+ } else if (attr.equals("valueUnits")) {
+ setValueUnits(value);
+ } else if (attr.equals("numBytes")) {
+ setNumBytes(value);
+ } else if (attr.equals("numBytesUnits")) {
+ setNumBytesUnits(value);
+ } else if (attr.equals("timeType")) {
+ setTimeType(value);
+ } else if (attr.equals("timeValue")) {
+ setTimeValue(value);
+ } else /* Add Specific Attributes from here */ if
(attr.equals("sender")) {
+ setSender(value);
+ } else if (attr.equals("receiver")) {
+ setReceiver(value);
+ } else if (attr.equals("sent")) {
+ setSent(value);
+ } else if (attr.equals("loss")) {
+ setLoss(value);
+ } else if (attr.equals("lost_percent")) {
+ setLostPercent(value);
+ } else if (attr.equals("duplicates")) {
+ setDuplicates(value);
+ } else if (attr.equals("min_delay")) {
+ setMinDelay(value);
+ } else if (attr.equals("med_delay")) {
+ setMedDelay(value);
+ } else if (attr.equals("max_delay")) {
+ setMaxDelay(value);
+ } else if (attr.equals("timeType")) {
+ setTimeType(value);
+ } else if (attr.equals("startTime")) {
+ setStartTime(value);
+ } else if (attr.equals("endTime")) {
+ setEndTime(value);
+ } else if (attr.equals("maxError")) {
+ setMaxError(value);
+ } else if (attr.equals("jitter")) {
+ setJitter(value);
+ } else if (attr.equals("hops")) {
+ setHops(value);
+ } else if (attr.indexOf("xmlns") >= 0) {
+ if (attr.split(":").length == 1) {
+ if (nss.getURI("") == null) {
+ nss.declarePrefix("", value);
+ }
+ if ((prefix.equals("")) && !(value.equals(uri))) {
+ uri = value;
+ }
+ } else {
+ if (nss.getURI(attr.split(":")[1]) == null) {
+ nss.declarePrefix(attr.split(":")[1], value);
+ }
+ if ((prefix.equals(attr.split(":")[1])) &&
!(value.equals(uri))) {
+ uri = value;
+ }
+ }
+ } else {
+ System.err.println(
+ "Error: " + getFileName() + " addAttr(String, String,
NamespaceSupport) unrecognized attribute pair: "
+ + attr + " - " + value);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * The only allowable child for a datum element is the
+ * time.
+ */
+ public boolean addChild(Element newChild)
+ {
+ if (newChild.getLocalName().equals("time")) {
+ setTime((Time) newChild);
+ } else {
+ System.err.println("Error: " + getFileName() + "
addChild(Element) unrecognized child: " + newChild);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Converts the contents of this object into an xml tag.
+ */
+ public ContentHandler toXML(ContentHandler handler, NamespaceSupport
nss) throws Exception
+ {
+ try {
+ handler.startElement(getUri(), getLocalName(), getQName(),
getAttributes(nss));
+ handler = getChildren(handler, nss);
+ handler.endElement(getUri(), getLocalName(), getQName());
+
+ if (getCompleted()) {
+ nss.popContext();
+ unSetCompleted();
+ }
+ } catch (Exception e) {
+ System.err.println(
+ "Error: " + getFileName() + " toXML(ContentHandler,
NamespaceSupport) XML formulation error.");
+ }
+ return handler;
+ }
+
+ /**
+ * Converts items into attributes for an xml tag.
+ */
+ public AttributesImpl getAttributes(NamespaceSupport nss)
+ {
+ AttributesImpl atts = new AttributesImpl();
+
+ if (!(getValue().equals(""))) {
+ atts.addAttribute(getUri(), "value", "value", "CDATA",
getValue());
+ }
+ if (!(getValueUnits().equals(""))) {
+ atts.addAttribute(getUri(), "valueUnits", "valueUnits", "CDATA",
getValueUnits());
+ }
+ if (!(getNumBytes().equals(""))) {
+ atts.addAttribute(getUri(), "numBytes", "numBytes", "CDATA",
getNumBytes());
+ }
+ if (!(getNumBytesUnits().equals(""))) {
+ atts.addAttribute(getUri(), "numBytesUnits", "numBytesUnits",
"CDATA", getNumBytesUnits());
+ }
+ if (!(getTimeType().equals(""))) {
+ atts.addAttribute(getUri(), "timeType", "timeType", "CDATA",
getTimeType());
+ }
+ if (!(getTimeValue().equals(""))) {
+ atts.addAttribute(getUri(), "timeValue", "timeValue", "CDATA",
getTimeValue());
+ }
+ /* Add Specific Attributes from here */
+ if (!(getSender().equals(""))) {
+ atts.addAttribute(getUri(), "sender", "sender", "CDATA",
getSender());
+ }
+ if (!(getReceiver().equals(""))) {
+ atts.addAttribute(getUri(), "receiver", "receiver", "CDATA",
getReceiver());
+ }
+ if (!(getSent().equals(""))) {
+ atts.addAttribute(getUri(), "sent", "sent", "CDATA", getSent());
+ }
+ if (!(getLoss().equals(""))) {
+ atts.addAttribute(getUri(), "loss", "loss", "CDATA", getLoss());
+ }
+ if (!(getLostPercent().equals(""))) {
+ atts.addAttribute(getUri(), "lost_percent", "lost_percent",
"CDATA", getLostPercent());
+ }
+ if (!(getDuplicates().equals(""))) {
+ atts.addAttribute(getUri(), "duplicates", "duplicates", "CDATA",
getDuplicates());
+ }
+ if (!(getMinDelay().equals(""))) {
+ atts.addAttribute(getUri(), "min_delay", "min_delay", "CDATA",
getMinDelay());
+ }
+ if (!(getMedDelay().equals(""))) {
+ atts.addAttribute(getUri(), "med_delay", "med_delay", "CDATA",
getMedDelay());
+ }
+ if (!(getMaxDelay().equals(""))) {
+ atts.addAttribute(getUri(), "max_delay", "max_delay", "CDATA",
getMaxDelay());
+ }
+ if (!(getStartTime().equals(""))) {
+ atts.addAttribute(getUri(), "startTime", "startTime", "CDATA",
getStartTime());
+ }
+ if (!(getEndTime().equals(""))) {
+ atts.addAttribute(getUri(), "endTime", "endTime", "CDATA",
getEndTime());
+ }
+ if (!(getMaxError().equals(""))) {
+ atts.addAttribute(getUri(), "maxError", "maxError", "CDATA",
getMaxError());
+ }
+ if (!(getJitter().equals(""))) {
+ atts.addAttribute(getUri(), "jitter", "jitter", "CDATA",
getJitter());
+ }
+ if (!(getHops().equals(""))) {
+ atts.addAttribute(getUri(), "hops", "hops", "CDATA", getHops());
+ }
+ if (nss.getURI(getPrefix()) == null) {
+ nss.pushContext();
+ if (getPrefix().equals("")) {
+ atts.addAttribute(getUri(), "xmlns", "xmlns", "CDATA",
getUri());
+ } else {
+ atts.addAttribute(getUri(), "xmlns:" + getPrefix(), "xmlns:"
+ getPrefix(), "CDATA", getUri());
+ }
+ nss.declarePrefix(getPrefix(), getUri());
+ setCompleted();
+ }
+
+ return atts;
+ }
+
+ /**
+ * Chases children references down to print out all related xml tags.
+ */
+ public ContentHandler getChildren(ContentHandler handler,
NamespaceSupport nss) throws Exception
+ {
+ if (getTime() != null) {
+ handler = getTime().toXML(handler, nss);
+ }
+ return handler;
+ }
+
+ /**
+ * Given a DOM element (a parent), construct
+ * the children elements.
+ */
+ public void getDOM(org.w3c.dom.Element parent)
+ {
+ org.w3c.dom.Document doc = parent.getOwnerDocument();
+ org.w3c.dom.Element datum = doc.createElementNS(getUri(),
getQName());
+ parent.appendChild(datum);
+ if (!(getValue().equals(""))) {
+ datum.setAttribute("value", getValue());
+ }
+ if (!(getValueUnits().equals(""))) {
+ datum.setAttribute("valueUnits", getValueUnits());
+ }
+ if (!(getTimeType().equals(""))) {
+ datum.setAttribute("timeType", getTimeType());
+ }
+ if (!(getTimeValue().equals(""))) {
+ datum.setAttribute("timeValue", getTimeValue());
+ }
+ if (!(getNumBytes().equals(""))) {
+ datum.setAttribute("numBytes", getNumBytes());
+ }
+ if (!(getNumBytesUnits().equals(""))) {
+ datum.setAttribute("numBytesUnits", getNumBytesUnits());
+ }
+ /* Add Specific Attributes from here */
+ if (!(getSender().equals(""))) {
+ datum.setAttribute("sender", getSender());
+ }
+ if (!(getReceiver().equals(""))) {
+ datum.setAttribute("receiver", getReceiver());
+ }
+ if (!(getSent().equals(""))) {
+ datum.setAttribute("sent", getSent());
+ }
+ if (!(getLoss().equals(""))) {
+ datum.setAttribute("loss", getLoss());
+ }
+ if (!(getLostPercent().equals(""))) {
+ datum.setAttribute("lost_percent", getLostPercent());
+ }
+ if (!(getDuplicates().equals(""))) {
+ datum.setAttribute("duplicates", getDuplicates());
+ }
+ if (!(getMinDelay().equals(""))) {
+ datum.setAttribute("min_delay", getMinDelay());
+ }
+ if (!(getMedDelay().equals(""))) {
+ datum.setAttribute("med_delay", getMedDelay());
+ }
+ if (!(getMaxDelay().equals(""))) {
+ datum.setAttribute("max_delay", getMaxDelay());
+ }
+ if (!(getStartTime().equals(""))) {
+ datum.setAttribute("startTime", getStartTime());
+ }
+ if (!(getEndTime().equals(""))) {
+ datum.setAttribute("endTime", getEndTime());
+ }
+ if (!(getMaxError().equals(""))) {
+ datum.setAttribute("maxError", getMaxError());
+ }
+ if (!(getJitter().equals(""))) {
+ datum.setAttribute("jitter", getJitter());
+ }
+ if (!(getHops().equals(""))) {
+ datum.setAttribute("hops", getHops());
+ }
+
+ if (getTime() != null) {
+ getTime().getDOM(datum);
+ }
+ }
+
+ /**
+ * Called when the object is placed in
+ * an output statement.
+ */
+ public String toString()
+ {
+ return getFileName() + ": ---> " + getValue()
+ + " sender:" + getSender()
+ + " receiver:" + getReceiver()
+ + " sent:" + getSent()
+ + " loss:" + getLoss()
+ + " lost_percent:" + getLostPercent()
+ + " duplicates:" + getDuplicates()
+ + " min_delay:" + getMinDelay()
+ + " med_delay:" + getMedDelay()
+ + " max_delay:" + getMaxDelay()
+ + " startTime:" + getStartTime()
+ + " endTime:" + getEndTime()
+ + " maxError: " + getMaxError()
+ + " jitter:" + getJitter()
+ + " hops:" + getHops()
+ + " numBytes:" + getNumBytes()
+ + " numBytesUnits:" + getNumBytesUnits()
+ + " valueUnits:" + getValueUnits()
+ + " timeType:" + getTimeType()
+ + " timeValue:" + getTimeValue() + getTime();
+ }
+}
+
Modified:
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/OwampQueryGenerator.java
===================================================================
---
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/OwampQueryGenerator.java
2012-12-20 12:23:36 UTC (rev 6074)
+++
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/OwampQueryGenerator.java
2012-12-20 14:21:21 UTC (rev 6075)
@@ -29,8 +29,11 @@
protected LoggerComponent logger = null;
- private final String[] parameters = {"count", "dscp", "phb",
- "wait", "endDelay", "timeOut", "padding", "portRange", "direction"};
+ private final String[] parameters = {
+ "count", "timeout", "size", "percentile", "DSCP",
+ "enddelay", "startdelay", "bucket_width", "intermediates",
"portrange",
+ "units", "one-way", "output", "phb", "wait", "padding", "direction"
+ };
// -------------------------------------- constructors
- [pS-dev] [GEANT/SA2/ps-java-services] r6075 - in trunk: perfsonar-java-sql-ma/packaging/deb perfsonar- java-sql-ma/src/main/java/org/perfsonar/service/measuremen tArchive/sqlType perfsonar-java-sql-ma/src/main/java/org/p erfsonar/service/measurementArchive/sqlType/dao perfsonar- java-sql-ma/src/main/java/org/perfsonar/service/measuremen tArchive/sqlType/nmwg perfsonar-java-sql-ma/src/main/resou rces/db/migration/mysql perfsonar-java-sql-ma/src/main/res ources/perfsonar/conf perfsonar-java-sql-ma/src/test/java/ org/perfsonar/service/measurementArchive/sqlType perfsonar -java-sql-ma/src/test/java/org/perfsonar/service/measureme ntArchive/sqlType/dao perfsonar_base/src/main/java/org/p erfsonar/base/nmwg/owamp perfsonar_base/src/main/java/or g/perfsonar/service/measurementArchive/metadataConfig/quer yGenerator, svn-noreply, 12/20/2012
Archive powered by MHonArc 2.6.16.