http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/testfact6_base.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/testfact6_base.xml 
b/lens-cube/src/test/resources/schema/facts/testfact6_base.xml
new file mode 100644
index 0000000..42715e9
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/testfact6_base.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="testfact6_base" cube_name="baseCube" weight="150.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="msr13" _type="double" comment="third measure"/>
+    <column name="msr14" _type="bigint" comment="fourth measure"/>
+    <column name="d_time" _type="timestamp" comment="event time"/>
+    <column name="processing_time" _type="timestamp" comment="processing 
time"/>
+    <column name="dim1" _type="string" comment="base dim"/>
+    <column name="booleancut" _type="boolean" comment="expr dim"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.testfact6_base.c3.updateperiods" 
value="MONTHLY,HOURLY,YEARLY,QUARTERLY,MINUTELY,DAILY"/>
+    <property name="cube.fact.relative.start.time" value="now.year - 90 days"/>
+    <property name="cube.fact.testfact6_base.cubename" value="baseCube"/>
+    <property name="cube.fact.testfact6_base.c1.updateperiods" 
value="MONTHLY,HOURLY,YEARLY,QUARTERLY,MINUTELY,DAILY"/>
+    <property name="cube.fact.testfact6_base.c4.updateperiods" 
value="MONTHLY,HOURLY,YEARLY,QUARTERLY,MINUTELY,DAILY"/>
+    <property name="cube.fact.testfact6_base.c2.updateperiods" 
value="MONTHLY,HOURLY,YEARLY,QUARTERLY,MINUTELY,DAILY"/>
+    <property name="cube.fact.testfact6_base.storages" value="C3,C4,C1,C2"/>
+    <property name="cube.table.testfact6_base.weight" value="150.0"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>MINUTELY</update_period>
+        <update_period>HOURLY</update_period>
+        <update_period>DAILY</update_period>
+        <update_period>MONTHLY</update_period>
+        <update_period>QUARTERLY</update_period>
+        <update_period>YEARLY</update_period>
+      </update_periods>
+      <storage_name>C3</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+    <storage_table>
+      <update_periods>
+        <update_period>MINUTELY</update_period>
+        <update_period>HOURLY</update_period>
+        <update_period>DAILY</update_period>
+        <update_period>MONTHLY</update_period>
+        <update_period>QUARTERLY</update_period>
+        <update_period>YEARLY</update_period>
+      </update_periods>
+      <storage_name>C4</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="ttd" _type="string" comment="test date partition"/>
+          <column name="ttd2" _type="string" comment="test date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="ttd,ttd2"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>ttd</time_part_cols>
+        <time_part_cols>ttd2</time_part_cols>
+      </table_desc>
+    </storage_table>
+    <storage_table>
+      <update_periods>
+        <update_period>MINUTELY</update_period>
+        <update_period>HOURLY</update_period>
+        <update_period>DAILY</update_period>
+        <update_period>MONTHLY</update_period>
+        <update_period>QUARTERLY</update_period>
+        <update_period>YEARLY</update_period>
+      </update_periods>
+      <storage_name>C1</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+    <storage_table>
+      <update_periods>
+        <update_period>MINUTELY</update_period>
+        <update_period>HOURLY</update_period>
+        <update_period>DAILY</update_period>
+        <update_period>MONTHLY</update_period>
+        <update_period>QUARTERLY</update_period>
+        <update_period>YEARLY</update_period>
+      </update_periods>
+      <storage_name>C2</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/testfact_continuous.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/testfact_continuous.xml 
b/lens-cube/src/test/resources/schema/facts/testfact_continuous.xml
new file mode 100644
index 0000000..94fb68a
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/testfact_continuous.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="testfact_continuous" cube_name="testCube" weight="100.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="msr11" _type="double" comment="third measure"/>
+    <column name="msr15" _type="int" comment="fifteenth measure"/>
+    <column name="d_time" _type="timestamp" comment="event time"/>
+    <column name="processing_time" _type="timestamp" comment="processing 
time"/>
+    <column name="dim1" _type="string" comment="base dim"/>
+    <column name="dim11" _type="string" comment="base dim"/>
+    <column name="dim12" _type="string" comment="base dim"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.relative.start.time" value="now.year - 90 days"/>
+    <property name="cube.table.testfact_continuous.weight" value="100.0"/>
+    <property name="cube.fact.testfact_continuous.storages" value="C0"/>
+    <property name="cube.fact.absolute.start.time" 
value="$absolute{now.day-3days}"/>
+    <property name="cube.fact.testfact_continuous.c0.updateperiods" 
value="CONTINUOUS"/>
+    <property name="cube.fact.testfact_continuous.cubename" value="testCube"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>CONTINUOUS</update_period>
+      </update_periods>
+      <storage_name>C0</storage_name>
+      <table_desc external="false">
+        <part_cols/>
+        <table_parameters>
+          <property name="totalSize" value="0"/>
+          <property name="numFiles" value="0"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/testfact_deprecated.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/testfact_deprecated.xml 
b/lens-cube/src/test/resources/schema/facts/testfact_deprecated.xml
new file mode 100644
index 0000000..f14395e
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/testfact_deprecated.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="testfact_deprecated" cube_name="baseCube" weight="5.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="msr12" _type="float" comment="second measure"/>
+    <column name="d_time" _type="timestamp" comment="event time"/>
+    <column name="processing_time" _type="timestamp" comment="processing 
time"/>
+    <column name="dim1" _type="string" comment="base dim"/>
+    <column name="dim11" _type="string" comment="base dim"/>
+    <column name="dim2" _type="int" comment="dim2 id"/>
+    <column name="userid" _type="int" comment="user id"/>
+    <column name="xuserid" _type="int" comment="user id"/>
+    <column name="yuserid" _type="int" comment="user id"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.testfact_deprecated.c2.updateperiods"
+              value="MONTHLY,HOURLY,YEARLY,QUARTERLY,MINUTELY,DAILY"/>
+    <property name="cube.fact.testfact_deprecated.cubename" value="baseCube"/>
+    <property name="cube.fact.testfact_deprecated.c3.updateperiods"
+              value="MONTHLY,HOURLY,YEARLY,QUARTERLY,MINUTELY,DAILY"/>
+    <property name="cube.fact.absolute.start.time" 
value="$absolute{now.day-3days}"/>
+    <property name="cube.fact.testfact_deprecated.c4.updateperiods"
+              value="MONTHLY,HOURLY,YEARLY,QUARTERLY,MINUTELY,DAILY"/>
+    <property name="cube.fact.absolute.end.time" 
value="$absolute{now.day-2days}"/>
+    <property name="cube.fact.relative.start.time" value="now.year - 90 days"/>
+    <property name="cube.table.testfact_deprecated.weight" value="5.0"/>
+    <property name="cube.fact.testfact_deprecated.storages" 
value="C3,C4,C1,C2"/>
+    <property name="cube.fact.testfact_deprecated.c1.updateperiods"
+              value="MONTHLY,HOURLY,YEARLY,QUARTERLY,MINUTELY,DAILY"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>MINUTELY</update_period>
+        <update_period>HOURLY</update_period>
+        <update_period>DAILY</update_period>
+        <update_period>MONTHLY</update_period>
+        <update_period>QUARTERLY</update_period>
+        <update_period>YEARLY</update_period>
+      </update_periods>
+      <storage_name>C3</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+    <storage_table>
+      <update_periods>
+        <update_period>MINUTELY</update_period>
+        <update_period>HOURLY</update_period>
+        <update_period>DAILY</update_period>
+        <update_period>MONTHLY</update_period>
+        <update_period>QUARTERLY</update_period>
+        <update_period>YEARLY</update_period>
+      </update_periods>
+      <storage_name>C4</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="ttd" _type="string" comment="test date partition"/>
+          <column name="ttd2" _type="string" comment="test date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="ttd,ttd2"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>ttd</time_part_cols>
+        <time_part_cols>ttd2</time_part_cols>
+      </table_desc>
+    </storage_table>
+    <storage_table>
+      <update_periods>
+        <update_period>MINUTELY</update_period>
+        <update_period>HOURLY</update_period>
+        <update_period>DAILY</update_period>
+        <update_period>MONTHLY</update_period>
+        <update_period>QUARTERLY</update_period>
+        <update_period>YEARLY</update_period>
+      </update_periods>
+      <storage_name>C1</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+    <storage_table>
+      <update_periods>
+        <update_period>MINUTELY</update_period>
+        <update_period>HOURLY</update_period>
+        <update_period>DAILY</update_period>
+        <update_period>MONTHLY</update_period>
+        <update_period>QUARTERLY</update_period>
+        <update_period>YEARLY</update_period>
+      </update_periods>
+      <storage_name>C2</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/testfactmonthly.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/testfactmonthly.xml 
b/lens-cube/src/test/resources/schema/facts/testfactmonthly.xml
new file mode 100644
index 0000000..8237ba0
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/testfactmonthly.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="testfactmonthly" cube_name="testCube" weight="5.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="msr21" _type="float" comment="second measure"/>
+    <column name="msr4" _type="bigint" comment="fourth measure"/>
+    <column name="msr15" _type="int" comment="fifteenth measure"/>
+    <column name="union_join_ctx_msr3" _type="int" 
comment="union_join_ctx_third measure"/>
+    <column name="newmeasure" _type="bigint" comment="measure available  from 
now"/>
+    <column name="union_join_ctx_msr2" _type="int" 
comment="union_join_ctx_second measure"/>
+    <column name="msr2" _type="float" comment="second measure"/>
+    <column name="msr3" _type="double" comment="third measure"/>
+    <column name="msr22" _type="float" comment="second measure"/>
+    <column name="msr9" _type="bigint" comment="ninth measure"/>
+    <column name="msr1" _type="int" comment="first measure"/>
+    <column name="noaggrmsr" _type="bigint" comment="measure without a default 
aggregate"/>
+    <column name="union_join_ctx_msr1" _type="int" 
comment="union_join_ctx_first measure"/>
+    <column name="countryid" _type="int" comment="country id"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.relative.start.time" value="now.year - 90 days"/>
+    <property name="cube.fact.testfactmonthly.storages" value="C2"/>
+    <property name="cube.fact.testfactmonthly.cubename" value="testCube"/>
+    <property name="cube.table.testfactmonthly.weight" value="5.0"/>
+    <property name="cube.fact.testfactmonthly.c2.updateperiods" 
value="MONTHLY"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>MONTHLY</update_period>
+      </update_periods>
+      <storage_name>C2</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact1.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact1.xml 
b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact1.xml
new file mode 100644
index 0000000..d07393d
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact1.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="union_join_ctx_fact1" cube_name="baseCube" weight="5.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="union_join_ctx_msr1" _type="int" comment="first measure"/>
+    <column name="d_time" _type="timestamp" comment="event time"/>
+    <column name="union_join_ctx_zipcode" _type="int" comment="zip"/>
+    <column name="union_join_ctx_cityid" _type="int" comment="city id"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.relative.start.time" value="now.year - 90 days"/>
+    <property name="cube.fact.union_join_ctx_fact1.cubename" value="baseCube"/>
+    <property name="cube.fact.absolute.start.time" value="$absolute{now.day - 
90 days}"/>
+    <property name="cube.fact.union_join_ctx_fact1.storages" value="C1"/>
+    <property name="cube.table.union_join_ctx_fact1.weight" value="5.0"/>
+    <property name="cube.fact.absolute.end.time" value="$absolute{now.day - 30 
days}"/>
+    <property name="cube.fact.is.aggregated" value="false"/>
+    <property name="cube.fact.union_join_ctx_fact1.c1.updateperiods" 
value="DAILY"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>DAILY</update_period>
+      </update_periods>
+      <storage_name>C1</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact2.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact2.xml 
b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact2.xml
new file mode 100644
index 0000000..9145dcc
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact2.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="union_join_ctx_fact2" cube_name="baseCube" weight="5.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="union_join_ctx_msr1" _type="int" comment="first measure"/>
+    <column name="d_time" _type="timestamp" comment="event time"/>
+    <column name="union_join_ctx_zipcode" _type="int" comment="zip"/>
+    <column name="union_join_ctx_cityid" _type="int" comment="city id"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.union_join_ctx_fact2.storages" value="C1"/>
+    <property name="cube.fact.absolute.start.time" value="$absolute{now.day - 
31 days}"/>
+    <property name="cube.fact.union_join_ctx_fact2.cubename" value="baseCube"/>
+    <property name="cube.fact.absolute.end.time" value="$absolute{now.day + 7 
days}"/>
+    <property name="cube.fact.is.aggregated" value="false"/>
+    <property name="cube.fact.union_join_ctx_fact2.c1.updateperiods" 
value="DAILY"/>
+    <property name="cube.table.union_join_ctx_fact2.weight" value="5.0"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>DAILY</update_period>
+      </update_periods>
+      <storage_name>C1</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact3.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact3.xml 
b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact3.xml
new file mode 100644
index 0000000..db091b7
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact3.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="union_join_ctx_fact3" cube_name="baseCube" weight="5.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="union_join_ctx_msr2" _type="int" comment="second measure"/>
+    <column name="d_time" _type="timestamp" comment="event time"/>
+    <column name="union_join_ctx_zipcode" _type="int" comment="zip"/>
+    <column name="union_join_ctx_cityid" _type="int" comment="city id"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.union_join_ctx_fact3.cubename" value="baseCube"/>
+    <property name="cube.fact.absolute.start.time" value="$absolute{now.day - 
90 days}"/>
+    <property name="cube.fact.union_join_ctx_fact3.c1.updateperiods" 
value="DAILY"/>
+    <property name="cube.fact.absolute.end.time" value="$absolute{now.day + 7 
days}"/>
+    <property name="cube.fact.is.aggregated" value="false"/>
+    <property name="cube.fact.union_join_ctx_fact3.storages" value="C1"/>
+    <property name="cube.table.union_join_ctx_fact3.weight" value="5.0"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>DAILY</update_period>
+      </update_periods>
+      <storage_name>C1</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact5.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact5.xml 
b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact5.xml
new file mode 100644
index 0000000..e1fbad6
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact5.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="union_join_ctx_fact5" cube_name="baseCube" weight="5.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="d_time" _type="timestamp" comment="event time"/>
+    <column name="union_join_ctx_zipcode" _type="int" comment="zip"/>
+    <column name="union_join_ctx_cityid" _type="int" comment="city id"/>
+    <column name="union_join_ctx_msr3" _type="int" comment="third measure"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.union_join_ctx_fact5.c1.updateperiods" 
value="DAILY"/>
+    <property name="cube.fact.absolute.start.time" value="$absolute{now.day - 
90 days}"/>
+    <property name="cube.fact.union_join_ctx_fact5.cubename" value="baseCube"/>
+    <property name="cube.fact.absolute.end.time" value="$absolute{now.day -30 
days}"/>
+    <property name="cube.fact.union_join_ctx_fact5.storages" value="C1"/>
+    <property name="cube.fact.is.aggregated" value="false"/>
+    <property name="cube.table.union_join_ctx_fact5.weight" value="5.0"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>DAILY</update_period>
+      </update_periods>
+      <storage_name>C1</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact6.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact6.xml 
b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact6.xml
new file mode 100644
index 0000000..0af6a13
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/facts/union_join_ctx_fact6.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_fact_table name="union_join_ctx_fact6" cube_name="baseCube" weight="5.0" 
xmlns="uri:lens:cube:0.1">
+  <columns>
+    <column name="d_time" _type="timestamp" comment="event time"/>
+    <column name="union_join_ctx_zipcode" _type="int" comment="zip"/>
+    <column name="union_join_ctx_cityid" _type="int" comment="city id"/>
+    <column name="union_join_ctx_msr3" _type="int" comment="third measure"/>
+  </columns>
+  <properties>
+    <property name="cube.fact.union_join_ctx_fact6.c1.updateperiods" 
value="DAILY"/>
+    <property name="cube.fact.union_join_ctx_fact6.cubename" value="baseCube"/>
+    <property name="cube.fact.absolute.start.time" value="$absolute{now.day 
-31 days}"/>
+    <property name="cube.fact.union_join_ctx_fact6.storages" value="C1"/>
+    <property name="cube.fact.absolute.end.time" value="$absolute{now.day + 7 
days}"/>
+    <property name="cube.fact.is.aggregated" value="false"/>
+    <property name="cube.table.union_join_ctx_fact6.weight" value="5.0"/>
+  </properties>
+  <storage_tables>
+    <storage_table>
+      <update_periods>
+        <update_period>DAILY</update_period>
+      </update_periods>
+      <storage_name>C1</storage_name>
+      <table_desc external="false">
+        <part_cols>
+          <column name="dt" _type="string" comment="date partition"/>
+        </part_cols>
+        <table_parameters>
+          <property name="cube.storagetable.time.partcols" value="dt"/>
+        </table_parameters>
+        <serde_parameters>
+          <property name="serialization.format" value="1"/>
+        </serde_parameters>
+        <time_part_cols>dt</time_part_cols>
+      </table_desc>
+    </storage_table>
+  </storage_tables>
+</x_fact_table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/segmentations/seg1.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/segmentations/seg1.xml 
b/lens-cube/src/test/resources/schema/segmentations/seg1.xml
new file mode 100644
index 0000000..7ed48a1
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/segmentations/seg1.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+
+-->
+<x_segmentation cube_name="testcube" name="seg1" weight="100.0" 
xmlns="uri:lens:cube:0.1"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd ">
+  <properties>
+    <property name="seg1.prop" value="s1"/>
+    <property name="cube.segmentation.relative.start.time" value="now 
-10days"/>
+  </properties>
+  <segements>
+    <segment cube_name="cube11">
+      <segment_parameters>
+        <property name="lens.metastore.cube.column.mapping" value="foo=bar"/>
+      </segment_parameters>
+    </segment>
+    <segment cube_name="cube22">
+      <segment_parameters>
+        <property name="lens.metastore.cube.column.mapping" value="foo1=bar1"/>
+      </segment_parameters>
+    </segment>
+    <segment cube_name="cube33">
+      <segment_parameters>
+        <property name="lens.metastore.cube.column.mapping" value="foo2=bar2"/>
+      </segment_parameters>
+    </segment>
+  </segements>
+</x_segmentation>

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/storages/c0.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/storages/c0.xml 
b/lens-cube/src/test/resources/schema/storages/c0.xml
new file mode 100644
index 0000000..de432a1
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/storages/c0.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_storage name="c0" classname="org.apache.lens.cube.metadata.HDFSStorage" 
xmlns="uri:lens:cube:0.1">
+  <properties>
+    <property name="cube.table.c0.weight" value="0.0"/>
+  </properties>
+</x_storage>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/storages/c1.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/storages/c1.xml 
b/lens-cube/src/test/resources/schema/storages/c1.xml
new file mode 100644
index 0000000..a0f0886
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/storages/c1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_storage name="c1" classname="org.apache.lens.cube.metadata.HDFSStorage" 
xmlns="uri:lens:cube:0.1">
+  <properties>
+    <property name="cube.table.c1.weight" value="0.0"/>
+  </properties>
+</x_storage>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/storages/c2.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/storages/c2.xml 
b/lens-cube/src/test/resources/schema/storages/c2.xml
new file mode 100644
index 0000000..eb670af
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/storages/c2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_storage name="c2" classname="org.apache.lens.cube.metadata.HDFSStorage" 
xmlns="uri:lens:cube:0.1">
+  <properties>
+    <property name="cube.table.c2.weight" value="0.0"/>
+  </properties>
+</x_storage>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/storages/c3.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/storages/c3.xml 
b/lens-cube/src/test/resources/schema/storages/c3.xml
new file mode 100644
index 0000000..4b78cdb
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/storages/c3.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_storage name="c3" classname="org.apache.lens.cube.metadata.HDFSStorage" 
xmlns="uri:lens:cube:0.1">
+  <properties>
+    <property name="cube.table.c3.weight" value="0.0"/>
+  </properties>
+</x_storage>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/storages/c4.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/storages/c4.xml 
b/lens-cube/src/test/resources/schema/storages/c4.xml
new file mode 100644
index 0000000..9ed2d52
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/storages/c4.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_storage name="c4" classname="org.apache.lens.cube.metadata.HDFSStorage" 
xmlns="uri:lens:cube:0.1">
+  <properties>
+    <property name="cube.table.c4.weight" value="0.0"/>
+  </properties>
+</x_storage>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/storages/c5.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/storages/c5.xml 
b/lens-cube/src/test/resources/schema/storages/c5.xml
new file mode 100644
index 0000000..8ebdf3c
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/storages/c5.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_storage name="c5" classname="org.apache.lens.cube.metadata.HDFSStorage" 
xmlns="uri:lens:cube:0.1">
+  <properties>
+    <property name="cube.table.c5.weight" value="0.0"/>
+  </properties>
+</x_storage>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-cube/src/test/resources/schema/storages/c99.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/storages/c99.xml 
b/lens-cube/src/test/resources/schema/storages/c99.xml
new file mode 100644
index 0000000..d87db78
--- /dev/null
+++ b/lens-cube/src/test/resources/schema/storages/c99.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<x_storage name="c99" classname="org.apache.lens.cube.metadata.HDFSStorage" 
xmlns="uri:lens:cube:0.1">
+  <properties>
+    <property name="cube.table.c99.weight" value="0.0"/>
+  </properties>
+</x_storage>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/112af59c/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java
 
b/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java
index 24660e1..abaae5b 100644
--- 
a/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java
+++ 
b/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.lens.server.metastore;
 
-import static org.apache.lens.server.metastore.JAXBUtils.*;
+import static org.apache.lens.cube.metadata.JAXBUtils.*;
 
 import java.util.*;
 import java.util.Date;
@@ -168,10 +168,7 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   @Override
   public void createCube(LensSessionHandle sessionid, XCube cube) throws 
LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      CubeMetastoreClient msClient = getClient(sessionid);
-      Cube parent = cube instanceof XDerivedCube ? (Cube) msClient.getCube(
-        ((XDerivedCube) cube).getParent()) : null;
-      msClient.createCube(JAXBUtils.hiveCubeFromXCube(cube, parent));
+      getClient(sessionid).createCube(cube);
       log.info("Created cube " + cube.getName());
     }
   }
@@ -200,7 +197,7 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
    * @param cubeName cube name
    */
   public void dropCube(LensSessionHandle sessionid, String cubeName) throws 
LensException {
-    try(SessionContext ignored = new SessionContext(sessionid)) {
+    try (SessionContext ignored = new SessionContext(sessionid)) {
       getClient(sessionid).dropCube(cubeName);
     }
   }
@@ -214,10 +211,7 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   @Override
   public void updateCube(LensSessionHandle sessionid, XCube cube) throws 
LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      CubeMetastoreClient msClient = getClient(sessionid);
-      Cube parent = cube instanceof XDerivedCube ? (Cube) msClient.getCube(
-        ((XDerivedCube) cube).getParent()) : null;
-      msClient.alterCube(cube.getName(), JAXBUtils.hiveCubeFromXCube(cube, 
parent));
+      getClient(sessionid).alterCube(cube);
       log.info("Cube updated " + cube.getName());
     } catch (HiveException e) {
       throw new LensException(e);
@@ -233,23 +227,9 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   @Override
   public void createDimensionTable(LensSessionHandle sessionid, 
XDimensionTable xDimTable) throws LensException {
     String dimTblName = xDimTable.getTableName();
-    List<FieldSchema> columns = 
JAXBUtils.fieldSchemaListFromColumns(xDimTable.getColumns());
-    Map<String, UpdatePeriod> updatePeriodMap =
-      JAXBUtils.dumpPeriodsFromStorageTables(xDimTable.getStorageTables());
-
-    Map<String, String> properties = 
JAXBUtils.mapFromXProperties(xDimTable.getProperties());
-    Map<String, StorageTableDesc> storageDesc = 
JAXBUtils.tableDescPrefixMapFromXStorageTables(
-      xDimTable.getStorageTables());
 
     try (SessionContext ignored = new SessionContext(sessionid)){
-      log.info("# Columns: " + columns);
-      
getClient(sessionid).createCubeDimensionTable(xDimTable.getDimensionName(),
-        dimTblName,
-        columns,
-        xDimTable.getWeight(),
-        updatePeriodMap,
-        properties,
-        storageDesc);
+      getClient(sessionid).createCubeDimensionTable(xDimTable);
       log.info("Dimension Table created " + xDimTable.getTableName());
     }
   }
@@ -265,31 +245,14 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   @Override
   public XDimensionTable getDimensionTable(LensSessionHandle sessionid, String 
dimTblName) throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      CubeMetastoreClient msClient = getClient(sessionid);
-      CubeDimensionTable dimTable = msClient.getDimensionTable(dimTblName);
-      XDimensionTable dt = JAXBUtils.dimTableFromCubeDimTable(dimTable);
-      if (dimTable.getStorages() != null && !dimTable.getStorages().isEmpty()) 
{
-        for (String storageName : dimTable.getStorages()) {
-          XStorageTableElement tblElement = 
JAXBUtils.getXStorageTableFromHiveTable(
-            
msClient.getHiveTable(MetastoreUtil.getFactOrDimtableStorageTableName(dimTblName,
 storageName)));
-          tblElement.setStorageName(storageName);
-          UpdatePeriod p = dimTable.getSnapshotDumpPeriods().get(storageName);
-          if (p != null) {
-            
tblElement.getUpdatePeriods().getUpdatePeriod().add(XUpdatePeriod.valueOf(p.name()));
-          }
-          dt.getStorageTables().getStorageTable().add(tblElement);
-        }
-      }
-      return dt;
+      return getClient(sessionid).getXDimensionTable(dimTblName);
     }
   }
 
   @Override
   public void updateDimensionTable(LensSessionHandle sessionid, 
XDimensionTable dimensionTable) throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      
getClient(sessionid).alterCubeDimensionTable(dimensionTable.getTableName(),
-        JAXBUtils.cubeDimTableFromDimTable(dimensionTable),
-        
JAXBUtils.tableDescPrefixMapFromXStorageTables(dimensionTable.getStorageTables()));
+      getClient(sessionid).alterCubeDimensionTable(dimensionTable);
       log.info("Updated dimension table " + dimensionTable.getTableName());
     } catch (HiveException exc) {
       throw new LensException(exc);
@@ -395,43 +358,7 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   @Override
   public XFactTable getFactTable(LensSessionHandle sessionid, String fact) 
throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      CubeMetastoreClient msClient = getClient(sessionid);
-      CubeFactTable cft = msClient.getFactTable(fact);
-      XFactTable factTable = JAXBUtils.factTableFromCubeFactTable(cft);
-      Map<String, Map<UpdatePeriod, String>> storageMap = 
cft.getStoragePrefixUpdatePeriodMap();
-      for (String storageName : cft.getStorages()) {
-        Set<UpdatePeriod> updatePeriods = 
cft.getUpdatePeriods().get(storageName);
-        // This map tells if there are different tables for different update 
period.
-        Map<UpdatePeriod, String> updatePeriodToTableMap = 
storageMap.get(storageName);
-        Set<String> tableNames = new HashSet<>();
-        for (UpdatePeriod updatePeriod : updatePeriods) {
-          tableNames.add(updatePeriodToTableMap.get(updatePeriod));
-        }
-        if (tableNames.size() <= 1) {
-          XStorageTableElement tblElement = 
JAXBUtils.getXStorageTableFromHiveTable(
-            
msClient.getHiveTable(MetastoreUtil.getFactOrDimtableStorageTableName(fact, 
storageName)));
-          tblElement.setStorageName(storageName);
-          for (UpdatePeriod p : updatePeriods) {
-            
tblElement.getUpdatePeriods().getUpdatePeriod().add(XUpdatePeriod.valueOf(p.name()));
-          }
-          factTable.getStorageTables().getStorageTable().add(tblElement);
-        } else {
-          // Multiple storage tables.
-          XStorageTableElement tblElement = new XStorageTableElement();
-          tblElement.setStorageName(storageName);
-          XUpdatePeriods xUpdatePeriods = new XUpdatePeriods();
-          tblElement.setUpdatePeriods(xUpdatePeriods);
-          for (Map.Entry entry : updatePeriodToTableMap.entrySet()) {
-            XUpdatePeriodTableDescriptor updatePeriodTableDescriptor = new 
XUpdatePeriodTableDescriptor();
-            
updatePeriodTableDescriptor.setTableDesc(getStorageTableDescFromHiveTable(
-              
msClient.getHiveTable(MetastoreUtil.getFactOrDimtableStorageTableName(fact, 
(String) entry.getValue()))));
-            
updatePeriodTableDescriptor.setUpdatePeriod(XUpdatePeriod.valueOf(((UpdatePeriod)entry.getKey()).name()));
-            
xUpdatePeriods.getUpdatePeriodTableDescriptor().add(updatePeriodTableDescriptor);
-          }
-          factTable.getStorageTables().getStorageTable().add(tblElement);
-        }
-      }
-      return factTable;
+      return getClient(sessionid).getXFactTable(fact);
     }
   }
 
@@ -448,54 +375,34 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   @Override
   public void createFactTable(LensSessionHandle sessionid, XFactTable fact) 
throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      getClient(sessionid).createCubeFactTable(fact.getCubeName(),
-        fact.getName(),
-        JAXBUtils.fieldSchemaListFromColumns(fact.getColumns()),
-        
JAXBUtils.getFactUpdatePeriodsFromStorageTables(fact.getStorageTables()),
-        fact.getWeight(),
-        addFactColStartTimePropertyToFactProperties(fact),
-        
JAXBUtils.tableDescPrefixMapFromXStorageTables(fact.getStorageTables()),
-        JAXBUtils.storageTablePrefixMapOfStorage(fact.getStorageTables()));
+      getClient(sessionid).createCubeFactTable(fact);
       log.info("Created fact table " + fact.getName());
     }
   }
-  public  Map<String, String> 
addFactColStartTimePropertyToFactProperties(XFactTable fact) {
-    Map<String, String> props = new HashMap<String, String>();
-    props.putAll(JAXBUtils.mapFromXProperties(fact.getProperties()));
-    
props.putAll(JAXBUtils.columnStartAndEndTimeFromXColumns(fact.getColumns()));
-    return props;
-  }
 
   @Override
-  public void createSegmentation(LensSessionHandle sessionid, XSegmentation 
cubeSeg) throws LensException {
+  public void updateFactTable(LensSessionHandle sessionid, XFactTable fact) 
throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      getClient(sessionid).createSegmentation(
-              cubeSeg.getCubeName(),
-              cubeSeg.getName(),
-              JAXBUtils.segmentsFromXSegments(cubeSeg.getSegements()),
-              cubeSeg.getWeight(),
-              JAXBUtils.mapFromXProperties(cubeSeg.getProperties()));
-      log.info("Created segmentation " + cubeSeg.getName());
+      getClient(sessionid).alterCubeFactTable(fact);
+      log.info("Updated fact table " + fact.getName());
+    } catch (HiveException e) {
+      throw new LensException(e);
     }
   }
 
 
   @Override
-  public void updateFactTable(LensSessionHandle sessionid, XFactTable fact) 
throws LensException {
+  public void createSegmentation(LensSessionHandle sessionid, XSegmentation 
cubeSeg) throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      getClient(sessionid).alterCubeFactTable(fact.getName(), 
JAXBUtils.cubeFactFromFactTable(fact),
-        
JAXBUtils.tableDescPrefixMapFromXStorageTables(fact.getStorageTables()),
-          JAXBUtils.columnStartAndEndTimeFromXColumns(fact.getColumns()));
-      log.info("Updated fact table " + fact.getName());
-    } catch (HiveException e) {
-      throw new LensException(e);
+      getClient(sessionid).createSegmentation(cubeSeg);
+      log.info("Created segmentation " + cubeSeg.getName());
     }
   }
 
   @Override
   public void updateSegmentation(LensSessionHandle sessionid, XSegmentation 
cubeSeg) throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      getClient(sessionid).alterSegmentation(cubeSeg.getName(), 
segmentationFromXSegmentation(cubeSeg));
+      getClient(sessionid).alterSegmentation(cubeSeg);
       log.info("Updated segmentation " + cubeSeg.getName());
     } catch (HiveException e) {
       throw new LensException(e);
@@ -906,7 +813,7 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   public void createStorage(LensSessionHandle sessionid, XStorage storage)
     throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      
getClient(sessionid).createStorage(JAXBUtils.storageFromXStorage(storage));
+      getClient(sessionid).createStorage(storage);
       log.info("Created storage " + storage.getName());
     }
 
@@ -925,8 +832,7 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   public void alterStorage(LensSessionHandle sessionid, String storageName,
     XStorage storage) throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      getClient(sessionid).alterStorage(storageName,
-        JAXBUtils.storageFromXStorage(storage));
+      getClient(sessionid).alterStorage(storage);
       log.info("Altered storage " + storageName);
     } catch (HiveException e) {
       throw new LensException(e);
@@ -1015,7 +921,7 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   public void createDimension(LensSessionHandle sessionid, XDimension 
dimension)
     throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      
getClient(sessionid).createDimension(JAXBUtils.dimensionFromXDimension(dimension));
+      getClient(sessionid).createDimension(dimension);
       log.info("Created dimension " + dimension.getName());
     }
   }
@@ -1041,8 +947,7 @@ public class CubeMetastoreServiceImpl extends 
BaseLensService implements CubeMet
   public void updateDimension(LensSessionHandle sessionid, String dimName, 
XDimension dimension)
     throws LensException {
     try (SessionContext ignored = new SessionContext(sessionid)){
-      getClient(sessionid).alterDimension(dimName,
-        JAXBUtils.dimensionFromXDimension(dimension));
+      getClient(sessionid).alterDimension(dimension);
       log.info("Altered dimension " + dimName);
     } catch (HiveException e) {
       throw new LensException(e);

Reply via email to