This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/incubator-skywalking-oal-tool.git


The following commit(s) were added to refs/heads/master by this push:
     new 62b69aa  Add copyFrom method for complex data type. (#11)
62b69aa is described below

commit 62b69aa3e5abdef3ec7f6d1d458f9304c9a5aa87
Author: 彭勇升 pengys <[email protected]>
AuthorDate: Mon Oct 22 20:20:57 2018 +0800

    Add copyFrom method for complex data type. (#11)
---
 .../code-templates/IndicatorImplementor.ftl        | 51 ++++++++++++++++++----
 .../IndicatorImplementorExpected.java              |  6 +--
 2 files changed, 45 insertions(+), 12 deletions(-)

diff --git 
a/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl 
b/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
index 6f8240e..3245422 100644
--- a/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
+++ b/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
@@ -178,15 +178,26 @@ public class ${metricName}Indicator extends 
${indicatorClassName} implements Ala
     @Override
     public Indicator toHour() {
         ${metricName}Indicator indicator = new ${metricName}Indicator();
-        indicator.setTimeBucket(toTimeBucketInHour());
 <#list fieldsFromSource as field>
-    <#if field.columnName != "time_bucket">
+    <#if field.columnName == "time_bucket">
+        indicator.setTimeBucket(toTimeBucketInHour());
+    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
         indicator.${field.fieldSetter}(this.${field.fieldGetter}());
+    <#else>
+        ${field.typeName} newValue = new ${field.typeName}();
+        newValue.copyFrom(this.${field.fieldGetter}());
+        indicator.${field.fieldSetter}(newValue);
     </#if>
 </#list>
 <#list persistentFields as field>
-    <#if field.columnName != "time_bucket">
+    <#if field.columnName == "time_bucket">
+        indicator.setTimeBucket(toTimeBucketInHour());
+    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
         indicator.${field.fieldSetter}(this.${field.fieldGetter}());
+    <#else>
+        ${field.typeName} newValue = new ${field.typeName}();
+        newValue.copyFrom(this.${field.fieldGetter}());
+        indicator.${field.fieldSetter}(newValue);
     </#if>
 </#list>
         return indicator;
@@ -195,15 +206,26 @@ public class ${metricName}Indicator extends 
${indicatorClassName} implements Ala
     @Override
     public Indicator toDay() {
         ${metricName}Indicator indicator = new ${metricName}Indicator();
-        indicator.setTimeBucket(toTimeBucketInDay());
 <#list fieldsFromSource as field>
-    <#if field.columnName != "time_bucket">
+    <#if field.columnName == "time_bucket">
+        indicator.setTimeBucket(toTimeBucketInDay());
+    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
         indicator.${field.fieldSetter}(this.${field.fieldGetter}());
+    <#else>
+        ${field.typeName} newValue = new ${field.typeName}();
+        newValue.copyFrom(this.${field.fieldGetter}());
+        indicator.${field.fieldSetter}(newValue);
     </#if>
 </#list>
 <#list persistentFields as field>
-    <#if field.columnName != "time_bucket">
+    <#if field.columnName == "time_bucket">
+        indicator.setTimeBucket(toTimeBucketInDay());
+    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
         indicator.${field.fieldSetter}(this.${field.fieldGetter}());
+    <#else>
+        ${field.typeName} newValue = new ${field.typeName}();
+        newValue.copyFrom(this.${field.fieldGetter}());
+        indicator.${field.fieldSetter}(newValue);
     </#if>
 </#list>
         return indicator;
@@ -212,15 +234,26 @@ public class ${metricName}Indicator extends 
${indicatorClassName} implements Ala
     @Override
     public Indicator toMonth() {
         ${metricName}Indicator indicator = new ${metricName}Indicator();
-        indicator.setTimeBucket(toTimeBucketInMonth());
 <#list fieldsFromSource as field>
-    <#if field.columnName != "time_bucket">
+    <#if field.columnName == "time_bucket">
+        indicator.setTimeBucket(toTimeBucketInMonth());
+    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
         indicator.${field.fieldSetter}(this.${field.fieldGetter}());
+    <#else>
+        ${field.typeName} newValue = new ${field.typeName}();
+        newValue.copyFrom(this.${field.fieldGetter}());
+        indicator.${field.fieldSetter}(newValue);
     </#if>
 </#list>
 <#list persistentFields as field>
-    <#if field.columnName != "time_bucket">
+    <#if field.columnName == "time_bucket">
+        indicator.setTimeBucket(toTimeBucketInMonth());
+    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
         indicator.${field.fieldSetter}(this.${field.fieldGetter}());
+    <#else>
+        ${field.typeName} newValue = new ${field.typeName}();
+        newValue.copyFrom(this.${field.fieldGetter}());
+        indicator.${field.fieldSetter}(newValue);
     </#if>
 </#list>
         return indicator;
diff --git 
a/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java 
b/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
index 76cf7c7..b4554c4 100644
--- 
a/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
+++ 
b/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
@@ -116,11 +116,11 @@ public class ServiceAvgIndicator extends LongAvgIndicator 
implements AlarmSuppor
     @Override
     public Indicator toHour() {
         ServiceAvgIndicator indicator = new ServiceAvgIndicator();
-        indicator.setTimeBucket(toTimeBucketInHour());
         indicator.setEntityId(this.getEntityId());
         indicator.setSummation(this.getSummation());
         indicator.setCount(this.getCount());
         indicator.setValue(this.getValue());
+        indicator.setTimeBucket(toTimeBucketInHour());
         indicator.setStringField(this.getStringField());
         return indicator;
     }
@@ -128,11 +128,11 @@ public class ServiceAvgIndicator extends LongAvgIndicator 
implements AlarmSuppor
     @Override
     public Indicator toDay() {
         ServiceAvgIndicator indicator = new ServiceAvgIndicator();
-        indicator.setTimeBucket(toTimeBucketInDay());
         indicator.setEntityId(this.getEntityId());
         indicator.setSummation(this.getSummation());
         indicator.setCount(this.getCount());
         indicator.setValue(this.getValue());
+        indicator.setTimeBucket(toTimeBucketInDay());
         indicator.setStringField(this.getStringField());
         return indicator;
     }
@@ -140,11 +140,11 @@ public class ServiceAvgIndicator extends LongAvgIndicator 
implements AlarmSuppor
     @Override
     public Indicator toMonth() {
         ServiceAvgIndicator indicator = new ServiceAvgIndicator();
-        indicator.setTimeBucket(toTimeBucketInMonth());
         indicator.setEntityId(this.getEntityId());
         indicator.setSummation(this.getSummation());
         indicator.setCount(this.getCount());
         indicator.setValue(this.getValue());
+        indicator.setTimeBucket(toTimeBucketInMonth());
         indicator.setStringField(this.getStringField());
         return indicator;
     }

Reply via email to