1*cd519653SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*cd519653SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*cd519653SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*cd519653SAndrew Rist  * distributed with this work for additional information
6*cd519653SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*cd519653SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*cd519653SAndrew Rist  * "License"); you may not use this file except in compliance
9*cd519653SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*cd519653SAndrew Rist  *
11*cd519653SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*cd519653SAndrew Rist  *
13*cd519653SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*cd519653SAndrew Rist  * software distributed under the License is distributed on an
15*cd519653SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*cd519653SAndrew Rist  * KIND, either express or implied.  See the License for the
17*cd519653SAndrew Rist  * specific language governing permissions and limitations
18*cd519653SAndrew Rist  * under the License.
19*cd519653SAndrew Rist  *
20*cd519653SAndrew Rist  *************************************************************/
21*cd519653SAndrew Rist 
22*cd519653SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir package mod._scripting;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir import java.io.File;
27cdf0e10cSrcweir import java.io.FileReader;
28cdf0e10cSrcweir import java.io.BufferedReader;
29cdf0e10cSrcweir import java.io.IOException;
30cdf0e10cSrcweir 
31cdf0e10cSrcweir import java.util.ArrayList;
32cdf0e10cSrcweir import java.util.HashMap;
33cdf0e10cSrcweir import java.util.StringTokenizer;
34cdf0e10cSrcweir 
35cdf0e10cSrcweir import lib.TestEnvironment;
36cdf0e10cSrcweir import lib.Parameters;
37cdf0e10cSrcweir 
38cdf0e10cSrcweir public class TestDataLoader {
39cdf0e10cSrcweir 
TestDataLoader()40cdf0e10cSrcweir     private TestDataLoader() {
41cdf0e10cSrcweir     }
42cdf0e10cSrcweir 
setupData(TestEnvironment tEnv, String name)43cdf0e10cSrcweir     public static void setupData(TestEnvironment tEnv, String name) {
44cdf0e10cSrcweir         String filename =
45cdf0e10cSrcweir             util.utils.getFullTestDocName("testdata");
46cdf0e10cSrcweir         File testdatadir = new File(filename);
47cdf0e10cSrcweir         File f = new File(testdatadir, name + ".csv");
48cdf0e10cSrcweir 
49cdf0e10cSrcweir         if (!f.exists())
50cdf0e10cSrcweir             return;
51cdf0e10cSrcweir 
52cdf0e10cSrcweir         BufferedReader in;
53cdf0e10cSrcweir 
54cdf0e10cSrcweir         try {
55cdf0e10cSrcweir             in = new BufferedReader(new FileReader(f));
56cdf0e10cSrcweir 
57cdf0e10cSrcweir             String s, previous, current;
58cdf0e10cSrcweir             ArrayList list = new ArrayList(11);
59cdf0e10cSrcweir 
60cdf0e10cSrcweir             if ((s = in.readLine()) != null) {
61cdf0e10cSrcweir                 StringTokenizer st = new StringTokenizer(s, ";");
62cdf0e10cSrcweir 
63cdf0e10cSrcweir                 current = previous = st.nextToken();
64cdf0e10cSrcweir                 list.add(getParameters(st));
65cdf0e10cSrcweir             }
66cdf0e10cSrcweir             else {
67cdf0e10cSrcweir                 return;
68cdf0e10cSrcweir             }
69cdf0e10cSrcweir 
70cdf0e10cSrcweir             while ((s = in.readLine()) != null) {
71cdf0e10cSrcweir                 StringTokenizer st = new StringTokenizer(s, ";");
72cdf0e10cSrcweir 
73cdf0e10cSrcweir                 current = st.nextToken();
74cdf0e10cSrcweir 
75cdf0e10cSrcweir                 if (!current.equals(previous)) {
76cdf0e10cSrcweir                     tEnv.addObjRelation(previous, list);
77cdf0e10cSrcweir                     previous = current;
78cdf0e10cSrcweir                     list = new ArrayList(11);
79cdf0e10cSrcweir                 }
80cdf0e10cSrcweir 
81cdf0e10cSrcweir                 list.add(getParameters(st));
82cdf0e10cSrcweir             }
83cdf0e10cSrcweir 
84cdf0e10cSrcweir             tEnv.addObjRelation(previous, list);
85cdf0e10cSrcweir         }
86cdf0e10cSrcweir         catch (IOException ioe) {
87cdf0e10cSrcweir         }
88cdf0e10cSrcweir     }
89cdf0e10cSrcweir 
getParameters(StringTokenizer st)90cdf0e10cSrcweir     private static Parameters getParameters(StringTokenizer st) {
91cdf0e10cSrcweir         String separator = "=";
92cdf0e10cSrcweir         HashMap map = new HashMap(5);
93cdf0e10cSrcweir 
94cdf0e10cSrcweir         while (st.hasMoreTokens()) {
95cdf0e10cSrcweir             String pair = st.nextToken();
96cdf0e10cSrcweir             StringTokenizer tokens = new StringTokenizer(pair, separator);
97cdf0e10cSrcweir 
98cdf0e10cSrcweir             String name;
99cdf0e10cSrcweir             String value;
100cdf0e10cSrcweir 
101cdf0e10cSrcweir             if (tokens.countTokens() < 2)
102cdf0e10cSrcweir                 continue;
103cdf0e10cSrcweir 
104cdf0e10cSrcweir             name = tokens.nextToken();
105cdf0e10cSrcweir             if (tokens.countTokens() == 1)
106cdf0e10cSrcweir                 value = tokens.nextToken();
107cdf0e10cSrcweir             else {
108cdf0e10cSrcweir                 StringBuffer buf = new StringBuffer(tokens.nextToken());
109cdf0e10cSrcweir                 while (tokens.hasMoreTokens())
110cdf0e10cSrcweir                     buf.append(separator).append(tokens.nextToken());
111cdf0e10cSrcweir                 value = buf.toString();
112cdf0e10cSrcweir             }
113cdf0e10cSrcweir 
114cdf0e10cSrcweir             map.put(name, value);
115cdf0e10cSrcweir         }
116cdf0e10cSrcweir 
117cdf0e10cSrcweir         return new Parameters(map);
118cdf0e10cSrcweir     }
119cdf0e10cSrcweir }
120