From a745c033a3ab1c7db9eb665a3b46608630d79d81 Mon Sep 17 00:00:00 2001 From: ginberg Date: Mon, 2 Aug 2021 10:01:40 +0200 Subject: [PATCH 1/8] add testutils --- test/tercen_java_client/TestClient.java | 54 +++++++++---------- test/tercen_java_client/TestTercenClient.java | 25 +++------ test/tercen_java_client/TestUtils.java | 9 ++++ 3 files changed, 41 insertions(+), 47 deletions(-) create mode 100644 test/tercen_java_client/TestUtils.java diff --git a/test/tercen_java_client/TestClient.java b/test/tercen_java_client/TestClient.java index 4d15e85..c4d51b5 100644 --- a/test/tercen_java_client/TestClient.java +++ b/test/tercen_java_client/TestClient.java @@ -1,23 +1,19 @@ package tercen_java_client; import java.io.IOException; -import java.net.URI; -import java.util.ArrayList; import java.util.LinkedHashMap; import org.junit.Assert; import org.junit.Test; - + +import com.tercen.http.AuthHttpClient; +import com.tercen.model.impl.UserSession; + import okhttp3.MediaType; import okhttp3.RequestBody; import okhttp3.Response; -import com.tercen.client.impl.TercenClient; -import com.tercen.http.AuthHttpClient; -import com.tercen.model.base.UserSessionBase; -import com.tercen.model.impl.UserSession; -import com.tercen.service.ServiceError; - -import tercen.tson.*; +import tercen.tson.TsonError; +import tercen.tson.jtson; public class TestClient { @Test @@ -25,7 +21,7 @@ public void test_get() throws IOException, InterruptedException { AuthHttpClient authClient = new AuthHttpClient(); - Response response = authClient.get("https://tercen.com", null); + Response response = authClient.get(TestUtils.TERCEN_URL, null); Assert.assertEquals(response.code(), 200); @@ -36,7 +32,7 @@ public void test_post() throws IOException, InterruptedException { AuthHttpClient authClient = new AuthHttpClient(); - Response response = authClient.post("https://tercen.com", null, + Response response = authClient.post(TestUtils.TERCEN_URL, null, RequestBody.create(MediaType.parse("application/json; charset=utf-8"), "some body text")); Assert.assertEquals(response.code(), 200); @@ -45,43 +41,41 @@ public void test_post() throws IOException, InterruptedException { @Test public void test_put() throws IOException, InterruptedException { - + AuthHttpClient authClient = new AuthHttpClient(); - Response response = authClient.put("https://tercen.com", null, + Response response = authClient.put(TestUtils.TERCEN_URL, null, RequestBody.create(MediaType.parse("application/json; charset=utf-8"), "some body text")); Assert.assertEquals(response.code(), 200); } - + @Test public void test_signin() throws IOException, InterruptedException, TsonError { - + AuthHttpClient authClient = new AuthHttpClient(); - + LinkedHashMap params = new LinkedHashMap(); - + params.put("domain", "tercen"); params.put("usernameOrEmail", "admin"); params.put("password", "admin"); - + byte[] result = jtson.encodeTSON(params); - - Response response = authClient.post("http://127.0.0.1:5400/api/v1/user/connect2", null, + Response response = authClient.post(TestUtils.LOCALHOST_CONNECT2_URL, null, RequestBody.create(MediaType.parse("application/tson"), result)); - - Assert.assertEquals( 200, response.code() ); - - LinkedHashMap map = (LinkedHashMap)jtson.decodeTSON(response.body().bytes()); - - UserSession userSession = new UserSession(map); - + + Assert.assertEquals(200, response.code()); + + LinkedHashMap map = (LinkedHashMap) jtson.decodeTSON(response.body().bytes()); + + UserSession userSession = new UserSession(map); + System.out.println(userSession.toJson()); System.out.println(userSession); - } - + } diff --git a/test/tercen_java_client/TestTercenClient.java b/test/tercen_java_client/TestTercenClient.java index dd61407..dd33f79 100644 --- a/test/tercen_java_client/TestTercenClient.java +++ b/test/tercen_java_client/TestTercenClient.java @@ -1,27 +1,20 @@ package tercen_java_client; -import java.net.URI; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import org.junit.Assert; import org.junit.Test; import com.tercen.client.impl.TercenClient; -import com.tercen.model.impl.Column; import com.tercen.model.impl.FileDocument; import com.tercen.model.impl.Project; -import com.tercen.model.impl.Schema; -import com.tercen.model.impl.Table; import com.tercen.model.impl.User; import com.tercen.model.impl.UserSession; import com.tercen.service.ServiceError; -import tercen.tson.CStringList; - public class TestTercenClient { - + Project getTestProject(TercenClient client, String teamOrUser, String projectName) throws ServiceError { List startKey = List.of(teamOrUser, false, "2000"); @@ -47,7 +40,7 @@ Project getTestProject(TercenClient client, String teamOrUser, String projectNam @Test public void test_user_connect() throws ServiceError { - TercenClient client = new TercenClient("http://127.0.0.1:5400/"); + TercenClient client = new TercenClient(TestUtils.LOCALHOST_URL); UserSession userSession = client.userService.connect2("tercen", "test", "test"); System.out.println(userSession.toJson()); @@ -58,7 +51,7 @@ public void test_user_connect() throws ServiceError { @Test public void test_get() throws ServiceError { - TercenClient client = new TercenClient("http://127.0.0.1:5400/"); + TercenClient client = new TercenClient(TestUtils.LOCALHOST_URL); client.userService.connect2("tercen", "test", "test"); User user = client.userService.get("test"); @@ -70,7 +63,7 @@ public void test_get() throws ServiceError { @Test public void test_project_create() throws ServiceError { - TercenClient client = new TercenClient("http://127.0.0.1:5400/"); + TercenClient client = new TercenClient(TestUtils.LOCALHOST_URL); client.userService.connect2("tercen", "test", "test"); final Project project = getTestProject(client, "test", "java-unit-test"); @@ -82,7 +75,7 @@ public void test_project_create() throws ServiceError { @Test public void test_project_find() throws ServiceError { - TercenClient client = new TercenClient("http://127.0.0.1:5400/"); + TercenClient client = new TercenClient(TestUtils.LOCALHOST_URL); client.userService.connect2("tercen", "test", "test"); @@ -105,7 +98,7 @@ public void test_project_find() throws ServiceError { @Test public void test_file_upload() throws ServiceError { - TercenClient client = new TercenClient("http://127.0.0.1:5400/"); + TercenClient client = new TercenClient(TestUtils.LOCALHOST_URL); client.userService.connect2("tercen", "test", "test"); @@ -129,7 +122,7 @@ public void test_file_upload() throws ServiceError { @Test public void test_file_append() throws ServiceError { - TercenClient client = new TercenClient("http://127.0.0.1:5400/"); + TercenClient client = new TercenClient(TestUtils.LOCALHOST_URL); client.userService.connect2("tercen", "test", "test"); @@ -150,12 +143,10 @@ public void test_file_append() throws ServiceError { } - - // @Test // public void test_select_table() throws ServiceError { // -// TercenClient client = new TercenClient("http://127.0.0.1:5400/"); +// TercenClient client = new TercenClient(TestUtils.LOCALHOST_URL); // // client.userService.connect2("tercen", "test", "test"); // diff --git a/test/tercen_java_client/TestUtils.java b/test/tercen_java_client/TestUtils.java new file mode 100644 index 0000000..7606605 --- /dev/null +++ b/test/tercen_java_client/TestUtils.java @@ -0,0 +1,9 @@ +package tercen_java_client; + +public class TestUtils { + + public static final String TERCEN_URL = "https://tercen.com"; + public static final String LOCALHOST_URL = "http://127.0.0.1:5402/"; + public static final String LOCALHOST_CONNECT2_URL = LOCALHOST_URL + "api/v1/user/connect2"; + +} From 5f006607628b816087517a5b4efd6c5b10b15251 Mon Sep 17 00:00:00 2001 From: ginberg Date: Mon, 2 Aug 2021 10:04:40 +0200 Subject: [PATCH 2/8] remove bin --- .gitignore | 1 + bin/.gitignore | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 bin/.gitignore diff --git a/.gitignore b/.gitignore index 4bf99a5..e818e39 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ hs_err_pid* /target/ +/bin/ diff --git a/bin/.gitignore b/bin/.gitignore deleted file mode 100644 index 24b1944..0000000 --- a/bin/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/com/ -/tercen_java_client/ From be15604e833b904d636935f4be23558292a590f4 Mon Sep 17 00:00:00 2001 From: ginberg Date: Mon, 2 Aug 2021 12:35:59 +0200 Subject: [PATCH 3/8] add uploaddata example --- pom.xml | 7 +- src/com/tercen/examples/UploadData.java | 52 + src/com/tercen/util/Utils.java | 33 + src/main/resources/crabs-long.csv | 1001 +++++++++++++++++ test/tercen_java_client/TestTercenClient.java | 30 +- test/tercen_java_client/TestUtils.java | 28 + 6 files changed, 1124 insertions(+), 27 deletions(-) create mode 100644 src/com/tercen/examples/UploadData.java create mode 100644 src/com/tercen/util/Utils.java create mode 100755 src/main/resources/crabs-long.csv diff --git a/pom.xml b/pom.xml index d4c9ff1..cd5215e 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - tercen_java_client + com.tercen tercen_java_client 0.0.1-SNAPSHOT @@ -31,6 +31,11 @@ 2.9.8 + + commons-io + commons-io + 2.7 + diff --git a/src/com/tercen/examples/UploadData.java b/src/com/tercen/examples/UploadData.java new file mode 100644 index 0000000..21df336 --- /dev/null +++ b/src/com/tercen/examples/UploadData.java @@ -0,0 +1,52 @@ +package com.tercen.examples; + +import java.io.File; +import java.io.IOException; + +import org.apache.commons.io.FileUtils; + +import com.tercen.client.impl.TercenClient; +import com.tercen.model.impl.CSVFileMetadata; +import com.tercen.model.impl.FileDocument; +import com.tercen.model.impl.Project; +import com.tercen.service.ServiceError; +import com.tercen.util.Utils; + +public class UploadData { + + private static final String FILE_NAME = "src/main/resources/crabs-long.csv"; + private static final String TEAM_NAME = "test-team"; + private static final String PROJECT_NAME = "myproject"; + private static final String LOCALHOST_URL = "http://127.0.0.1:5402/"; + + public static void main(String[] args) { + TercenClient client = new TercenClient(UploadData.LOCALHOST_URL); + + try { + client.userService.connect2("tercen", "test", "test"); + final Project project = Utils.getTestProject(client, TEAM_NAME, PROJECT_NAME); + + FileDocument fileDoc = new FileDocument(); + fileDoc.name = "crabs_data"; + fileDoc.projectId = project.id; + fileDoc.acl.owner = project.acl.owner; + fileDoc.metadata = new CSVFileMetadata(); + fileDoc.metadata.contentType = "text/csv"; + // file.metadata = ","; + // file.metadata = "text/csv"; + fileDoc.metadata.contentEncoding = "text/csv"; + + File file = new File(FILE_NAME); + byte[] bytes = FileUtils.readFileToByteArray(file); + + FileDocument result = client.fileService.upload(fileDoc, bytes); + + System.out.println(result.toJson()); + + } catch (ServiceError e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/com/tercen/util/Utils.java b/src/com/tercen/util/Utils.java new file mode 100644 index 0000000..4a5b790 --- /dev/null +++ b/src/com/tercen/util/Utils.java @@ -0,0 +1,33 @@ +package com.tercen.util; + +import java.util.List; +import java.util.Optional; + +import com.tercen.client.impl.TercenClient; +import com.tercen.model.impl.Project; +import com.tercen.service.ServiceError; + +public class Utils { + + public static Project getTestProject(TercenClient client, String teamOrUser, String projectName) + throws ServiceError { + + List startKey = List.of(teamOrUser, false, "2000"); + List endKey = List.of(teamOrUser, false, "2100"); + + List projects = client.projectService.findByTeamAndIsPublicAndLastModifiedDate(startKey, endKey, 1000, + 0, false, true); + + Optional result = projects.stream().filter(p -> p.name.equals(projectName)).findAny(); + + if (result.isPresent()) { + return result.get(); + } + + Project new_project = new Project(); + new_project.name = projectName; + new_project.acl.owner = teamOrUser; + + return client.projectService.create(new_project); + } +} diff --git a/src/main/resources/crabs-long.csv b/src/main/resources/crabs-long.csv new file mode 100755 index 0000000..efd06a6 --- /dev/null +++ b/src/main/resources/crabs-long.csv @@ -0,0 +1,1001 @@ +sp,sex,index,observation,variable,measurement +B,M,1,1,FL,8.1 +B,M,2,2,FL,8.8 +B,M,3,3,FL,9.2 +B,M,4,4,FL,9.6 +B,M,5,5,FL,9.8 +B,M,6,6,FL,10.8 +B,M,7,7,FL,11.1 +B,M,8,8,FL,11.6 +B,M,9,9,FL,11.8 +B,M,10,10,FL,11.8 +B,M,11,11,FL,12.2 +B,M,12,12,FL,12.3 +B,M,13,13,FL,12.6 +B,M,14,14,FL,12.8 +B,M,15,15,FL,12.8 +B,M,16,16,FL,12.9 +B,M,17,17,FL,13.1 +B,M,18,18,FL,13.1 +B,M,19,19,FL,13.3 +B,M,20,20,FL,13.9 +B,M,21,21,FL,14.3 +B,M,22,22,FL,14.6 +B,M,23,23,FL,15 +B,M,24,24,FL,15 +B,M,25,25,FL,15 +B,M,26,26,FL,15.2 +B,M,27,27,FL,15.4 +B,M,28,28,FL,15.7 +B,M,29,29,FL,15.9 +B,M,30,30,FL,16.1 +B,M,31,31,FL,16.1 +B,M,32,32,FL,16.2 +B,M,33,33,FL,16.3 +B,M,34,34,FL,16.4 +B,M,35,35,FL,16.6 +B,M,36,36,FL,16.8 +B,M,37,37,FL,16.9 +B,M,38,38,FL,17.1 +B,M,39,39,FL,17.1 +B,M,40,40,FL,17.2 +B,M,41,41,FL,17.7 +B,M,42,42,FL,17.9 +B,M,43,43,FL,18 +B,M,44,44,FL,18.8 +B,M,45,45,FL,19.3 +B,M,46,46,FL,19.3 +B,M,47,47,FL,19.7 +B,M,48,48,FL,19.8 +B,M,49,49,FL,19.8 +B,M,50,50,FL,21.3 +B,F,1,51,FL,7.2 +B,F,2,52,FL,9 +B,F,3,53,FL,9.1 +B,F,4,54,FL,9.1 +B,F,5,55,FL,9.5 +B,F,6,56,FL,9.8 +B,F,7,57,FL,10.1 +B,F,8,58,FL,10.3 +B,F,9,59,FL,10.4 +B,F,10,60,FL,10.8 +B,F,11,61,FL,11 +B,F,12,62,FL,11.2 +B,F,13,63,FL,11.5 +B,F,14,64,FL,11.6 +B,F,15,65,FL,11.6 +B,F,16,66,FL,11.7 +B,F,17,67,FL,11.9 +B,F,18,68,FL,12 +B,F,19,69,FL,12 +B,F,20,70,FL,12.6 +B,F,21,71,FL,12.8 +B,F,22,72,FL,12.8 +B,F,23,73,FL,12.8 +B,F,24,74,FL,13 +B,F,25,75,FL,13.1 +B,F,26,76,FL,13.2 +B,F,27,77,FL,13.4 +B,F,28,78,FL,13.7 +B,F,29,79,FL,13.9 +B,F,30,80,FL,14.7 +B,F,31,81,FL,14.9 +B,F,32,82,FL,15 +B,F,33,83,FL,15 +B,F,34,84,FL,15.1 +B,F,35,85,FL,15.1 +B,F,36,86,FL,15.1 +B,F,37,87,FL,15.2 +B,F,38,88,FL,15.3 +B,F,39,89,FL,15.4 +B,F,40,90,FL,15.5 +B,F,41,91,FL,15.6 +B,F,42,92,FL,15.6 +B,F,43,93,FL,15.7 +B,F,44,94,FL,15.8 +B,F,45,95,FL,16.2 +B,F,46,96,FL,16.4 +B,F,47,97,FL,16.7 +B,F,48,98,FL,17.4 +B,F,49,99,FL,17.5 +B,F,50,100,FL,19.2 +O,M,1,101,FL,9.1 +O,M,2,102,FL,10.2 +O,M,3,103,FL,10.7 +O,M,4,104,FL,11.4 +O,M,5,105,FL,12.5 +O,M,6,106,FL,12.5 +O,M,7,107,FL,12.7 +O,M,8,108,FL,13.2 +O,M,9,109,FL,13.4 +O,M,10,110,FL,13.7 +O,M,11,111,FL,14 +O,M,12,112,FL,14.1 +O,M,13,113,FL,14.1 +O,M,14,114,FL,14.1 +O,M,15,115,FL,14.2 +O,M,16,116,FL,14.2 +O,M,17,117,FL,14.2 +O,M,18,118,FL,14.6 +O,M,19,119,FL,14.7 +O,M,20,120,FL,15.1 +O,M,21,121,FL,15.1 +O,M,22,122,FL,15.4 +O,M,23,123,FL,15.7 +O,M,24,124,FL,16.2 +O,M,25,125,FL,16.3 +O,M,26,126,FL,17.1 +O,M,27,127,FL,17.4 +O,M,28,128,FL,17.5 +O,M,29,129,FL,17.5 +O,M,30,130,FL,17.8 +O,M,31,131,FL,17.9 +O,M,32,132,FL,18 +O,M,33,133,FL,18.2 +O,M,34,134,FL,18.4 +O,M,35,135,FL,18.6 +O,M,36,136,FL,18.6 +O,M,37,137,FL,18.8 +O,M,38,138,FL,18.8 +O,M,39,139,FL,19.4 +O,M,40,140,FL,19.4 +O,M,41,141,FL,20.1 +O,M,42,142,FL,20.6 +O,M,43,143,FL,21 +O,M,44,144,FL,21.5 +O,M,45,145,FL,21.6 +O,M,46,146,FL,21.6 +O,M,47,147,FL,21.9 +O,M,48,148,FL,22.1 +O,M,49,149,FL,23 +O,M,50,150,FL,23.1 +O,F,1,151,FL,10.7 +O,F,2,152,FL,11.4 +O,F,3,153,FL,12.5 +O,F,4,154,FL,12.6 +O,F,5,155,FL,12.9 +O,F,6,156,FL,14 +O,F,7,157,FL,14 +O,F,8,158,FL,14.3 +O,F,9,159,FL,14.7 +O,F,10,160,FL,14.9 +O,F,11,161,FL,15 +O,F,12,162,FL,15.6 +O,F,13,163,FL,15.6 +O,F,14,164,FL,15.6 +O,F,15,165,FL,15.7 +O,F,16,166,FL,16.1 +O,F,17,167,FL,16.1 +O,F,18,168,FL,16.2 +O,F,19,169,FL,16.7 +O,F,20,170,FL,17.1 +O,F,21,171,FL,17.5 +O,F,22,172,FL,17.5 +O,F,23,173,FL,17.5 +O,F,24,174,FL,17.6 +O,F,25,175,FL,18 +O,F,26,176,FL,18 +O,F,27,177,FL,18.3 +O,F,28,178,FL,18.4 +O,F,29,179,FL,18.4 +O,F,30,180,FL,18.5 +O,F,31,181,FL,18.6 +O,F,32,182,FL,18.8 +O,F,33,183,FL,18.9 +O,F,34,184,FL,19.1 +O,F,35,185,FL,19.1 +O,F,36,186,FL,19.7 +O,F,37,187,FL,19.9 +O,F,38,188,FL,19.9 +O,F,39,189,FL,20 +O,F,40,190,FL,20.1 +O,F,41,191,FL,20.3 +O,F,42,192,FL,20.5 +O,F,43,193,FL,20.6 +O,F,44,194,FL,20.9 +O,F,45,195,FL,21.3 +O,F,46,196,FL,21.4 +O,F,47,197,FL,21.7 +O,F,48,198,FL,21.9 +O,F,49,199,FL,22.5 +O,F,50,200,FL,23.1 +B,M,1,1,RW,6.7 +B,M,2,2,RW,7.7 +B,M,3,3,RW,7.8 +B,M,4,4,RW,7.9 +B,M,5,5,RW,8 +B,M,6,6,RW,9 +B,M,7,7,RW,9.9 +B,M,8,8,RW,9.1 +B,M,9,9,RW,9.6 +B,M,10,10,RW,10.5 +B,M,11,11,RW,10.8 +B,M,12,12,RW,11 +B,M,13,13,RW,10 +B,M,14,14,RW,10.2 +B,M,15,15,RW,10.9 +B,M,16,16,RW,11 +B,M,17,17,RW,10.6 +B,M,18,18,RW,10.9 +B,M,19,19,RW,11.1 +B,M,20,20,RW,11.1 +B,M,21,21,RW,11.6 +B,M,22,22,RW,11.3 +B,M,23,23,RW,10.9 +B,M,24,24,RW,11.5 +B,M,25,25,RW,11.9 +B,M,26,26,RW,12.1 +B,M,27,27,RW,11.8 +B,M,28,28,RW,12.6 +B,M,29,29,RW,12.7 +B,M,30,30,RW,11.6 +B,M,31,31,RW,12.8 +B,M,32,32,RW,13.3 +B,M,33,33,RW,12.7 +B,M,34,34,RW,13 +B,M,35,35,RW,13.5 +B,M,36,36,RW,12.8 +B,M,37,37,RW,13.2 +B,M,38,38,RW,12.6 +B,M,39,39,RW,12.7 +B,M,40,40,RW,13.5 +B,M,41,41,RW,13.6 +B,M,42,42,RW,14.1 +B,M,43,43,RW,13.7 +B,M,44,44,RW,15.8 +B,M,45,45,RW,13.5 +B,M,46,46,RW,13.8 +B,M,47,47,RW,15.3 +B,M,48,48,RW,14.2 +B,M,49,49,RW,14.3 +B,M,50,50,RW,15.7 +B,F,1,51,RW,6.5 +B,F,2,52,RW,8.5 +B,F,3,53,RW,8.1 +B,F,4,54,RW,8.2 +B,F,5,55,RW,8.2 +B,F,6,56,RW,8.9 +B,F,7,57,RW,9.3 +B,F,8,58,RW,9.5 +B,F,9,59,RW,9.7 +B,F,10,60,RW,9.5 +B,F,11,61,RW,9.8 +B,F,12,62,RW,10 +B,F,13,63,RW,11 +B,F,14,64,RW,11 +B,F,15,65,RW,11.4 +B,F,16,66,RW,10.6 +B,F,17,67,RW,11.4 +B,F,18,68,RW,10.7 +B,F,19,69,RW,11.1 +B,F,20,70,RW,12.2 +B,F,21,71,RW,11.7 +B,F,22,72,RW,12.2 +B,F,23,73,RW,12.2 +B,F,24,74,RW,11.4 +B,F,25,75,RW,11.5 +B,F,26,76,RW,12.2 +B,F,27,77,RW,11.8 +B,F,28,78,RW,12.5 +B,F,29,79,RW,13 +B,F,30,80,RW,12.5 +B,F,31,81,RW,13.2 +B,F,32,82,RW,13.8 +B,F,33,83,RW,14.2 +B,F,34,84,RW,13.3 +B,F,35,85,RW,13.5 +B,F,36,86,RW,13.8 +B,F,37,87,RW,14.3 +B,F,38,88,RW,14.2 +B,F,39,89,RW,13.3 +B,F,40,90,RW,13.8 +B,F,41,91,RW,13.9 +B,F,42,92,RW,14.7 +B,F,43,93,RW,13.9 +B,F,44,94,RW,15 +B,F,45,95,RW,15.2 +B,F,46,96,RW,14 +B,F,47,97,RW,16.1 +B,F,48,98,RW,16.9 +B,F,49,99,RW,16.7 +B,F,50,100,RW,16.5 +O,M,1,101,RW,6.9 +O,M,2,102,RW,8.2 +O,M,3,103,RW,8.6 +O,M,4,104,RW,9 +O,M,5,105,RW,9.4 +O,M,6,106,RW,9.4 +O,M,7,107,RW,10.4 +O,M,8,108,RW,11 +O,M,9,109,RW,10.1 +O,M,10,110,RW,11 +O,M,11,111,RW,11.5 +O,M,12,112,RW,10.4 +O,M,13,113,RW,10.5 +O,M,14,114,RW,10.7 +O,M,15,115,RW,10.6 +O,M,16,116,RW,10.7 +O,M,17,117,RW,11.3 +O,M,18,118,RW,11.3 +O,M,19,119,RW,11.1 +O,M,20,120,RW,11.4 +O,M,21,121,RW,11.5 +O,M,22,122,RW,11.1 +O,M,23,123,RW,12.2 +O,M,24,124,RW,11.8 +O,M,25,125,RW,11.6 +O,M,26,126,RW,12.6 +O,M,27,127,RW,12.8 +O,M,28,128,RW,12 +O,M,29,129,RW,12.7 +O,M,30,130,RW,12.5 +O,M,31,131,RW,12.9 +O,M,32,132,RW,13.4 +O,M,33,133,RW,13.7 +O,M,34,134,RW,13.4 +O,M,35,135,RW,13.4 +O,M,36,136,RW,13.5 +O,M,37,137,RW,13.4 +O,M,38,138,RW,13.8 +O,M,39,139,RW,14.1 +O,M,40,140,RW,14.4 +O,M,41,141,RW,13.7 +O,M,42,142,RW,14.4 +O,M,43,143,RW,15 +O,M,44,144,RW,15.5 +O,M,45,145,RW,15.4 +O,M,46,146,RW,14.8 +O,M,47,147,RW,15.7 +O,M,48,148,RW,15.8 +O,M,49,149,RW,16.8 +O,M,50,150,RW,15.7 +O,F,1,151,RW,9.7 +O,F,2,152,RW,9.2 +O,F,3,153,RW,10 +O,F,4,154,RW,11.5 +O,F,5,155,RW,11.2 +O,F,6,156,RW,11.9 +O,F,7,157,RW,12.8 +O,F,8,158,RW,12.2 +O,F,9,159,RW,13.2 +O,F,10,160,RW,13 +O,F,11,161,RW,12.3 +O,F,12,162,RW,13.5 +O,F,13,163,RW,14 +O,F,14,164,RW,14.1 +O,F,15,165,RW,13.6 +O,F,16,166,RW,13.6 +O,F,17,167,RW,13.7 +O,F,18,168,RW,14 +O,F,19,169,RW,14.3 +O,F,20,170,RW,14.5 +O,F,21,171,RW,14.3 +O,F,22,172,RW,14.4 +O,F,23,173,RW,14.7 +O,F,24,174,RW,14 +O,F,25,175,RW,14.9 +O,F,26,176,RW,16.3 +O,F,27,177,RW,15.7 +O,F,28,178,RW,15.5 +O,F,29,179,RW,15.7 +O,F,30,180,RW,14.6 +O,F,31,181,RW,14.5 +O,F,32,182,RW,15.2 +O,F,33,183,RW,16.7 +O,F,34,184,RW,16 +O,F,35,185,RW,16.3 +O,F,36,186,RW,16.7 +O,F,37,187,RW,16.6 +O,F,38,188,RW,17.9 +O,F,39,189,RW,16.7 +O,F,40,190,RW,17.2 +O,F,41,191,RW,16 +O,F,42,192,RW,17.5 +O,F,43,193,RW,17.5 +O,F,44,194,RW,16.5 +O,F,45,195,RW,18.4 +O,F,46,196,RW,18 +O,F,47,197,RW,17.1 +O,F,48,198,RW,17.2 +O,F,49,199,RW,17.2 +O,F,50,200,RW,20.2 +B,M,1,1,CL,16.1 +B,M,2,2,CL,18.1 +B,M,3,3,CL,19 +B,M,4,4,CL,20.1 +B,M,5,5,CL,20.3 +B,M,6,6,CL,23 +B,M,7,7,CL,23.8 +B,M,8,8,CL,24.5 +B,M,9,9,CL,24.2 +B,M,10,10,CL,25.2 +B,M,11,11,CL,27.3 +B,M,12,12,CL,26.8 +B,M,13,13,CL,27.7 +B,M,14,14,CL,27.2 +B,M,15,15,CL,27.4 +B,M,16,16,CL,26.8 +B,M,17,17,CL,28.2 +B,M,18,18,CL,28.3 +B,M,19,19,CL,27.8 +B,M,20,20,CL,29.2 +B,M,21,21,CL,31.3 +B,M,22,22,CL,31.9 +B,M,23,23,CL,31.4 +B,M,24,24,CL,32.4 +B,M,25,25,CL,32.5 +B,M,26,26,CL,32.3 +B,M,27,27,CL,33 +B,M,28,28,CL,35.8 +B,M,29,29,CL,34 +B,M,30,30,CL,33.8 +B,M,31,31,CL,34.9 +B,M,32,32,CL,36 +B,M,33,33,CL,35.6 +B,M,34,34,CL,35.7 +B,M,35,35,CL,38.1 +B,M,36,36,CL,36.2 +B,M,37,37,CL,37.3 +B,M,38,38,CL,36.4 +B,M,39,39,CL,36.7 +B,M,40,40,CL,37.6 +B,M,41,41,CL,38.7 +B,M,42,42,CL,39.7 +B,M,43,43,CL,39.2 +B,M,44,44,CL,42.1 +B,M,45,45,CL,41.6 +B,M,46,46,CL,40.9 +B,M,47,47,CL,41.9 +B,M,48,48,CL,43.2 +B,M,49,49,CL,42.4 +B,M,50,50,CL,47.1 +B,F,1,51,CL,14.7 +B,F,2,52,CL,19.3 +B,F,3,53,CL,18.5 +B,F,4,54,CL,19.2 +B,F,5,55,CL,19.6 +B,F,6,56,CL,20.4 +B,F,7,57,CL,20.9 +B,F,8,58,CL,21.3 +B,F,9,59,CL,21.7 +B,F,10,60,CL,22.5 +B,F,11,61,CL,22.5 +B,F,12,62,CL,22.8 +B,F,13,63,CL,24.7 +B,F,14,64,CL,24.6 +B,F,15,65,CL,23.7 +B,F,16,66,CL,24.9 +B,F,17,67,CL,26 +B,F,18,68,CL,24.6 +B,F,19,69,CL,25.4 +B,F,20,70,CL,26.1 +B,F,21,71,CL,27.1 +B,F,22,72,CL,26.7 +B,F,23,73,CL,27.9 +B,F,24,74,CL,27.3 +B,F,25,75,CL,27.6 +B,F,26,76,CL,27.9 +B,F,27,77,CL,28.4 +B,F,28,78,CL,28.6 +B,F,29,79,CL,30 +B,F,30,80,CL,30.1 +B,F,31,81,CL,30.1 +B,F,32,82,CL,31.7 +B,F,33,83,CL,32.8 +B,F,34,84,CL,31.8 +B,F,35,85,CL,31.9 +B,F,36,86,CL,31.7 +B,F,37,87,CL,33.9 +B,F,38,88,CL,32.6 +B,F,39,89,CL,32.4 +B,F,40,90,CL,33.4 +B,F,41,91,CL,32.8 +B,F,42,92,CL,33.9 +B,F,43,93,CL,33.6 +B,F,44,94,CL,34.5 +B,F,45,95,CL,34.5 +B,F,46,96,CL,34.2 +B,F,47,97,CL,36.6 +B,F,48,98,CL,38.2 +B,F,49,99,CL,38.6 +B,F,50,100,CL,40.9 +O,M,1,101,CL,16.7 +O,M,2,102,CL,20.2 +O,M,3,103,CL,20.7 +O,M,4,104,CL,22.7 +O,M,5,105,CL,23.2 +O,M,6,106,CL,24.2 +O,M,7,107,CL,26 +O,M,8,108,CL,27.1 +O,M,9,109,CL,26.6 +O,M,10,110,CL,27.5 +O,M,11,111,CL,29.2 +O,M,12,112,CL,28.9 +O,M,13,113,CL,29.1 +O,M,14,114,CL,28.7 +O,M,15,115,CL,28.7 +O,M,16,116,CL,27.8 +O,M,17,117,CL,29.2 +O,M,18,118,CL,29.9 +O,M,19,119,CL,29 +O,M,20,120,CL,30.2 +O,M,21,121,CL,30.9 +O,M,22,122,CL,30.2 +O,M,23,123,CL,31.7 +O,M,24,124,CL,32.3 +O,M,25,125,CL,31.6 +O,M,26,126,CL,35 +O,M,27,127,CL,36.1 +O,M,28,128,CL,34.4 +O,M,29,129,CL,34.6 +O,M,30,130,CL,36 +O,M,31,131,CL,36.9 +O,M,32,132,CL,36.7 +O,M,33,133,CL,38.8 +O,M,34,134,CL,37.9 +O,M,35,135,CL,37.8 +O,M,36,136,CL,36.9 +O,M,37,137,CL,37.2 +O,M,38,138,CL,39.2 +O,M,39,139,CL,39.1 +O,M,40,140,CL,39.8 +O,M,41,141,CL,40.6 +O,M,42,142,CL,42.8 +O,M,43,143,CL,42.9 +O,M,44,144,CL,45.5 +O,M,45,145,CL,45.7 +O,M,46,146,CL,43.4 +O,M,47,147,CL,45.4 +O,M,48,148,CL,44.6 +O,M,49,149,CL,47.2 +O,M,50,150,CL,47.6 +O,F,1,151,CL,21.4 +O,F,2,152,CL,21.7 +O,F,3,153,CL,24.1 +O,F,4,154,CL,25 +O,F,5,155,CL,25.8 +O,F,6,156,CL,27 +O,F,7,157,CL,28.8 +O,F,8,158,CL,28.1 +O,F,9,159,CL,29.6 +O,F,10,160,CL,30 +O,F,11,161,CL,30.1 +O,F,12,162,CL,31.2 +O,F,13,163,CL,31.6 +O,F,14,164,CL,31 +O,F,15,165,CL,31 +O,F,16,166,CL,31.6 +O,F,17,167,CL,31.4 +O,F,18,168,CL,31.6 +O,F,19,169,CL,32.3 +O,F,20,170,CL,33.1 +O,F,21,171,CL,34.5 +O,F,22,172,CL,34.5 +O,F,23,173,CL,33.3 +O,F,24,174,CL,34 +O,F,25,175,CL,34.7 +O,F,26,176,CL,37.9 +O,F,27,177,CL,35.1 +O,F,28,178,CL,35.6 +O,F,29,179,CL,36.5 +O,F,30,180,CL,37 +O,F,31,181,CL,34.7 +O,F,32,182,CL,35.8 +O,F,33,183,CL,36.3 +O,F,34,184,CL,37.8 +O,F,35,185,CL,37.9 +O,F,36,186,CL,39.9 +O,F,37,187,CL,39.4 +O,F,38,188,CL,40.1 +O,F,39,189,CL,40.4 +O,F,40,190,CL,39.8 +O,F,41,191,CL,39.4 +O,F,42,192,CL,40 +O,F,43,193,CL,41.5 +O,F,44,194,CL,39.9 +O,F,45,195,CL,43.8 +O,F,46,196,CL,41.2 +O,F,47,197,CL,41.7 +O,F,48,198,CL,42.6 +O,F,49,199,CL,43 +O,F,50,200,CL,46.2 +B,M,1,1,CW,19 +B,M,2,2,CW,20.8 +B,M,3,3,CW,22.4 +B,M,4,4,CW,23.1 +B,M,5,5,CW,23 +B,M,6,6,CW,26.5 +B,M,7,7,CW,27.1 +B,M,8,8,CW,28.4 +B,M,9,9,CW,27.8 +B,M,10,10,CW,29.3 +B,M,11,11,CW,31.6 +B,M,12,12,CW,31.5 +B,M,13,13,CW,31.7 +B,M,14,14,CW,31.8 +B,M,15,15,CW,31.5 +B,M,16,16,CW,30.9 +B,M,17,17,CW,32.3 +B,M,18,18,CW,32.4 +B,M,19,19,CW,32.3 +B,M,20,20,CW,33.3 +B,M,21,21,CW,35.5 +B,M,22,22,CW,36.4 +B,M,23,23,CW,36.4 +B,M,24,24,CW,37 +B,M,25,25,CW,37.2 +B,M,26,26,CW,36.7 +B,M,27,27,CW,37.5 +B,M,28,28,CW,40.3 +B,M,29,29,CW,38.9 +B,M,30,30,CW,39 +B,M,31,31,CW,40.7 +B,M,32,32,CW,41.7 +B,M,33,33,CW,40.9 +B,M,34,34,CW,41.8 +B,M,35,35,CW,43.4 +B,M,36,36,CW,41.8 +B,M,37,37,CW,42.7 +B,M,38,38,CW,42 +B,M,39,39,CW,41.9 +B,M,40,40,CW,43.9 +B,M,41,41,CW,44.5 +B,M,42,42,CW,44.6 +B,M,43,43,CW,44.4 +B,M,44,44,CW,49 +B,M,45,45,CW,47.4 +B,M,46,46,CW,46.5 +B,M,47,47,CW,48.5 +B,M,48,48,CW,49.7 +B,M,49,49,CW,48.9 +B,M,50,50,CW,54.6 +B,F,1,51,CW,17.1 +B,F,2,52,CW,22.7 +B,F,3,53,CW,21.6 +B,F,4,54,CW,22.2 +B,F,5,55,CW,22.4 +B,F,6,56,CW,23.9 +B,F,7,57,CW,24.4 +B,F,8,58,CW,24.7 +B,F,9,59,CW,25.4 +B,F,10,60,CW,26.3 +B,F,11,61,CW,25.7 +B,F,12,62,CW,26.9 +B,F,13,63,CW,29.2 +B,F,14,64,CW,28.5 +B,F,15,65,CW,27.7 +B,F,16,66,CW,28.5 +B,F,17,67,CW,30.1 +B,F,18,68,CW,28.9 +B,F,19,69,CW,29.2 +B,F,20,70,CW,31.6 +B,F,21,71,CW,31.2 +B,F,22,72,CW,31.1 +B,F,23,73,CW,31.9 +B,F,24,74,CW,31.8 +B,F,25,75,CW,32.6 +B,F,26,76,CW,32.1 +B,F,27,77,CW,32.7 +B,F,28,78,CW,33.8 +B,F,29,79,CW,34.9 +B,F,30,80,CW,34.7 +B,F,31,81,CW,35.6 +B,F,32,82,CW,36.9 +B,F,33,83,CW,37.4 +B,F,34,84,CW,36.3 +B,F,35,85,CW,37 +B,F,36,86,CW,36.6 +B,F,37,87,CW,38.5 +B,F,38,88,CW,38.3 +B,F,39,89,CW,37.6 +B,F,40,90,CW,38.7 +B,F,41,91,CW,37.9 +B,F,42,92,CW,39.5 +B,F,43,93,CW,38.5 +B,F,44,94,CW,40.3 +B,F,45,95,CW,40.1 +B,F,46,96,CW,39.8 +B,F,47,97,CW,41.9 +B,F,48,98,CW,44.1 +B,F,49,99,CW,44.5 +B,F,50,100,CW,47.9 +O,M,1,101,CW,18.6 +O,M,2,102,CW,22.2 +O,M,3,103,CW,22.7 +O,M,4,104,CW,24.8 +O,M,5,105,CW,26 +O,M,6,106,CW,27 +O,M,7,107,CW,28.8 +O,M,8,108,CW,30.4 +O,M,9,109,CW,29.6 +O,M,10,110,CW,30.5 +O,M,11,111,CW,32.2 +O,M,12,112,CW,31.8 +O,M,13,113,CW,31.6 +O,M,14,114,CW,31.9 +O,M,15,115,CW,31.7 +O,M,16,116,CW,30.9 +O,M,17,117,CW,32.2 +O,M,18,118,CW,33.5 +O,M,19,119,CW,32.1 +O,M,20,120,CW,33.3 +O,M,21,121,CW,34 +O,M,22,122,CW,33.6 +O,M,23,123,CW,34.2 +O,M,24,124,CW,35.3 +O,M,25,125,CW,34.2 +O,M,26,126,CW,38.9 +O,M,27,127,CW,39.5 +O,M,28,128,CW,37.3 +O,M,29,129,CW,38.4 +O,M,30,130,CW,39.8 +O,M,31,131,CW,40.9 +O,M,32,132,CW,41.3 +O,M,33,133,CW,42.7 +O,M,34,134,CW,42.2 +O,M,35,135,CW,41.9 +O,M,36,136,CW,40.2 +O,M,37,137,CW,41.1 +O,M,38,138,CW,43.3 +O,M,39,139,CW,43.2 +O,M,40,140,CW,44.3 +O,M,41,141,CW,44.5 +O,M,42,142,CW,46.5 +O,M,43,143,CW,47.2 +O,M,44,144,CW,49.7 +O,M,45,145,CW,49.7 +O,M,46,146,CW,48.2 +O,M,47,147,CW,51 +O,M,48,148,CW,49.6 +O,M,49,149,CW,52.1 +O,M,50,150,CW,52.8 +O,F,1,151,CW,24 +O,F,2,152,CW,24.1 +O,F,3,153,CW,27 +O,F,4,154,CW,28.1 +O,F,5,155,CW,29.1 +O,F,6,156,CW,31.4 +O,F,7,157,CW,32.4 +O,F,8,158,CW,31.8 +O,F,9,159,CW,33.4 +O,F,10,160,CW,33.7 +O,F,11,161,CW,33.3 +O,F,12,162,CW,35.1 +O,F,13,163,CW,35.3 +O,F,14,164,CW,34.5 +O,F,15,165,CW,34.8 +O,F,16,166,CW,36 +O,F,17,167,CW,36.1 +O,F,18,168,CW,35.6 +O,F,19,169,CW,37 +O,F,20,170,CW,37.2 +O,F,21,171,CW,39.6 +O,F,22,172,CW,39 +O,F,23,173,CW,37.6 +O,F,24,174,CW,38.6 +O,F,25,175,CW,39.5 +O,F,26,176,CW,43 +O,F,27,177,CW,40.5 +O,F,28,178,CW,40 +O,F,29,179,CW,41.6 +O,F,30,180,CW,42 +O,F,31,181,CW,39.4 +O,F,32,182,CW,40.5 +O,F,33,183,CW,41.7 +O,F,34,184,CW,42.3 +O,F,35,185,CW,42.6 +O,F,36,186,CW,43.6 +O,F,37,187,CW,43.9 +O,F,38,188,CW,46.4 +O,F,39,189,CW,45.1 +O,F,40,190,CW,44.1 +O,F,41,191,CW,44.1 +O,F,42,192,CW,45.5 +O,F,43,193,CW,46.2 +O,F,44,194,CW,44.7 +O,F,45,195,CW,48.4 +O,F,46,196,CW,46.2 +O,F,47,197,CW,47.2 +O,F,48,198,CW,47.4 +O,F,49,199,CW,48.7 +O,F,50,200,CW,52.5 +B,M,1,1,BD,7 +B,M,2,2,BD,7.4 +B,M,3,3,BD,7.7 +B,M,4,4,BD,8.2 +B,M,5,5,BD,8.2 +B,M,6,6,BD,9.8 +B,M,7,7,BD,9.8 +B,M,8,8,BD,10.4 +B,M,9,9,BD,9.7 +B,M,10,10,BD,10.3 +B,M,11,11,BD,10.9 +B,M,12,12,BD,11.4 +B,M,13,13,BD,11.4 +B,M,14,14,BD,10.9 +B,M,15,15,BD,11 +B,M,16,16,BD,11.4 +B,M,17,17,BD,11 +B,M,18,18,BD,11.2 +B,M,19,19,BD,11.3 +B,M,20,20,BD,12.1 +B,M,21,21,BD,12.7 +B,M,22,22,BD,13.7 +B,M,23,23,BD,13.2 +B,M,24,24,BD,13.4 +B,M,25,25,BD,13.6 +B,M,26,26,BD,13.6 +B,M,27,27,BD,13.6 +B,M,28,28,BD,14.5 +B,M,29,29,BD,14.2 +B,M,30,30,BD,14.4 +B,M,31,31,BD,15.7 +B,M,32,32,BD,15.4 +B,M,33,33,BD,14.9 +B,M,34,34,BD,15.2 +B,M,35,35,BD,14.9 +B,M,36,36,BD,14.9 +B,M,37,37,BD,15.6 +B,M,38,38,BD,15.1 +B,M,39,39,BD,15.6 +B,M,40,40,BD,16.1 +B,M,41,41,BD,16 +B,M,42,42,BD,16.8 +B,M,43,43,BD,16.2 +B,M,44,44,BD,17.8 +B,M,45,45,BD,17.8 +B,M,46,46,BD,16.8 +B,M,47,47,BD,17.8 +B,M,48,48,BD,18.6 +B,M,49,49,BD,18.3 +B,M,50,50,BD,20 +B,F,1,51,BD,6.1 +B,F,2,52,BD,7.7 +B,F,3,53,BD,7.7 +B,F,4,54,BD,7.7 +B,F,5,55,BD,7.8 +B,F,6,56,BD,8.8 +B,F,7,57,BD,8.4 +B,F,8,58,BD,8.9 +B,F,9,59,BD,8.3 +B,F,10,60,BD,9.1 +B,F,11,61,BD,8.2 +B,F,12,62,BD,9.4 +B,F,13,63,BD,10.1 +B,F,14,64,BD,10.4 +B,F,15,65,BD,10 +B,F,16,66,BD,10.4 +B,F,17,67,BD,10.9 +B,F,18,68,BD,10.5 +B,F,19,69,BD,11 +B,F,20,70,BD,11.2 +B,F,21,71,BD,11.9 +B,F,22,72,BD,11.1 +B,F,23,73,BD,11.5 +B,F,24,74,BD,11.3 +B,F,25,75,BD,11.1 +B,F,26,76,BD,11.5 +B,F,27,77,BD,11.7 +B,F,28,78,BD,11.9 +B,F,29,79,BD,13.1 +B,F,30,80,BD,12.5 +B,F,31,81,BD,12 +B,F,32,82,BD,14 +B,F,33,83,BD,14 +B,F,34,84,BD,13.5 +B,F,35,85,BD,13.8 +B,F,36,86,BD,13 +B,F,37,87,BD,14.7 +B,F,38,88,BD,13.8 +B,F,39,89,BD,13.8 +B,F,40,90,BD,14.7 +B,F,41,91,BD,13.4 +B,F,42,92,BD,14.3 +B,F,43,93,BD,14.1 +B,F,44,94,BD,15.3 +B,F,45,95,BD,13.9 +B,F,46,96,BD,15.2 +B,F,47,97,BD,15.4 +B,F,48,98,BD,16.6 +B,F,49,99,BD,17 +B,F,50,100,BD,18.1 +O,M,1,101,BD,7.4 +O,M,2,102,BD,9 +O,M,3,103,BD,9.2 +O,M,4,104,BD,10.1 +O,M,5,105,BD,10.8 +O,M,6,106,BD,11.2 +O,M,7,107,BD,12.1 +O,M,8,108,BD,12.2 +O,M,9,109,BD,12 +O,M,10,110,BD,12.2 +O,M,11,111,BD,13.1 +O,M,12,112,BD,13.5 +O,M,13,113,BD,13.1 +O,M,14,114,BD,13.3 +O,M,15,115,BD,12.9 +O,M,16,116,BD,12.7 +O,M,17,117,BD,13.5 +O,M,18,118,BD,12.8 +O,M,19,119,BD,13.1 +O,M,20,120,BD,14 +O,M,21,121,BD,13.9 +O,M,22,122,BD,13.5 +O,M,23,123,BD,14.2 +O,M,24,124,BD,14.7 +O,M,25,125,BD,14.5 +O,M,26,126,BD,15.7 +O,M,27,127,BD,16.2 +O,M,28,128,BD,15.3 +O,M,29,129,BD,16.1 +O,M,30,130,BD,16.7 +O,M,31,131,BD,16.5 +O,M,32,132,BD,17.1 +O,M,33,133,BD,17.2 +O,M,34,134,BD,17.7 +O,M,35,135,BD,17.3 +O,M,36,136,BD,17 +O,M,37,137,BD,17.5 +O,M,38,138,BD,17.9 +O,M,39,139,BD,17.8 +O,M,40,140,BD,17.9 +O,M,41,141,BD,18 +O,M,42,142,BD,19.6 +O,M,43,143,BD,19.4 +O,M,44,144,BD,20.9 +O,M,45,145,BD,20.6 +O,M,46,146,BD,20.1 +O,M,47,147,BD,21.1 +O,M,48,148,BD,20.5 +O,M,49,149,BD,21.5 +O,M,50,150,BD,21.6 +O,F,1,151,BD,9.8 +O,F,2,152,BD,9.7 +O,F,3,153,BD,10.9 +O,F,4,154,BD,11.5 +O,F,5,155,BD,11.9 +O,F,6,156,BD,12.6 +O,F,7,157,BD,12.7 +O,F,8,158,BD,12.5 +O,F,9,159,BD,12.9 +O,F,10,160,BD,13.3 +O,F,11,161,BD,14 +O,F,12,162,BD,14.1 +O,F,13,163,BD,13.8 +O,F,14,164,BD,13.8 +O,F,15,165,BD,13.8 +O,F,16,166,BD,14 +O,F,17,167,BD,13.9 +O,F,18,168,BD,13.7 +O,F,19,169,BD,14.7 +O,F,20,170,BD,14.6 +O,F,21,171,BD,15.6 +O,F,22,172,BD,16 +O,F,23,173,BD,14.6 +O,F,24,174,BD,15.5 +O,F,25,175,BD,15.7 +O,F,26,176,BD,17.2 +O,F,27,177,BD,16.1 +O,F,28,178,BD,15.9 +O,F,29,179,BD,16.4 +O,F,30,180,BD,16.6 +O,F,31,181,BD,15 +O,F,32,182,BD,16.6 +O,F,33,183,BD,15.3 +O,F,34,184,BD,16.8 +O,F,35,185,BD,17.2 +O,F,36,186,BD,18.2 +O,F,37,187,BD,17.9 +O,F,38,188,BD,17.9 +O,F,39,189,BD,17.7 +O,F,40,190,BD,18.6 +O,F,41,191,BD,18 +O,F,42,192,BD,19.2 +O,F,43,193,BD,19.2 +O,F,44,194,BD,17.5 +O,F,45,195,BD,20 +O,F,46,196,BD,18.7 +O,F,47,197,BD,19.6 +O,F,48,198,BD,19.5 +O,F,49,199,BD,19.8 +O,F,50,200,BD,21.1 diff --git a/test/tercen_java_client/TestTercenClient.java b/test/tercen_java_client/TestTercenClient.java index dd33f79..ef31e1b 100644 --- a/test/tercen_java_client/TestTercenClient.java +++ b/test/tercen_java_client/TestTercenClient.java @@ -15,28 +15,6 @@ public class TestTercenClient { - Project getTestProject(TercenClient client, String teamOrUser, String projectName) throws ServiceError { - - List startKey = List.of(teamOrUser, false, "2000"); - List endKey = List.of(teamOrUser, false, "2100"); - - List projects = client.projectService.findByTeamAndIsPublicAndLastModifiedDate(startKey, endKey, 1000, - 0, false, true); - - Optional result = projects.stream().filter(p -> p.name.equals(projectName)).findAny(); - - if (result.isPresent()) { - return result.get(); - } - - Project new_project = new Project(); - new_project.name = projectName; - new_project.acl.owner = teamOrUser; - - return client.projectService.create(new_project); - - } - @Test public void test_user_connect() throws ServiceError { @@ -66,7 +44,7 @@ public void test_project_create() throws ServiceError { TercenClient client = new TercenClient(TestUtils.LOCALHOST_URL); client.userService.connect2("tercen", "test", "test"); - final Project project = getTestProject(client, "test", "java-unit-test"); + final Project project = TestUtils.getTestProject(client, "test", "java-unit-test"); client.projectService.delete(project.id, project.rev); @@ -79,7 +57,7 @@ public void test_project_find() throws ServiceError { client.userService.connect2("tercen", "test", "test"); - final Project project = getTestProject(client, "test", "java-unit-test"); + final Project project = TestUtils.getTestProject(client, "test", "java-unit-test"); List startKey = List.of("test", false, "2000"); List endKey = List.of("test", false, "2100"); @@ -102,7 +80,7 @@ public void test_file_upload() throws ServiceError { client.userService.connect2("tercen", "test", "test"); - final Project project = getTestProject(client, "test", "java-unit-test"); + final Project project = TestUtils.getTestProject(client, "test", "java-unit-test"); FileDocument file = new FileDocument(); file.name = "hello.txt"; @@ -126,7 +104,7 @@ public void test_file_append() throws ServiceError { client.userService.connect2("tercen", "test", "test"); - final Project project = getTestProject(client, "test", "java-unit-test"); + final Project project = TestUtils.getTestProject(client, "test", "java-unit-test"); FileDocument file = new FileDocument(); file.name = "hello.txt"; diff --git a/test/tercen_java_client/TestUtils.java b/test/tercen_java_client/TestUtils.java index 7606605..b793469 100644 --- a/test/tercen_java_client/TestUtils.java +++ b/test/tercen_java_client/TestUtils.java @@ -1,9 +1,37 @@ package tercen_java_client; +import java.util.List; +import java.util.Optional; + +import com.tercen.client.impl.TercenClient; +import com.tercen.model.impl.Project; +import com.tercen.service.ServiceError; + public class TestUtils { public static final String TERCEN_URL = "https://tercen.com"; public static final String LOCALHOST_URL = "http://127.0.0.1:5402/"; public static final String LOCALHOST_CONNECT2_URL = LOCALHOST_URL + "api/v1/user/connect2"; + public static Project getTestProject(TercenClient client, String teamOrUser, String projectName) + throws ServiceError { + + List startKey = List.of(teamOrUser, false, "2000"); + List endKey = List.of(teamOrUser, false, "2100"); + + List projects = client.projectService.findByTeamAndIsPublicAndLastModifiedDate(startKey, endKey, 1000, + 0, false, true); + + Optional result = projects.stream().filter(p -> p.name.equals(projectName)).findAny(); + + if (result.isPresent()) { + return result.get(); + } + + Project new_project = new Project(); + new_project.name = projectName; + new_project.acl.owner = teamOrUser; + + return client.projectService.create(new_project); + } } From 930dc842656d0adad03643902983511237b79322 Mon Sep 17 00:00:00 2001 From: ginberg Date: Tue, 3 Aug 2021 10:08:51 +0200 Subject: [PATCH 4/8] update uploaddata --- src/com/tercen/examples/UploadData.java | 60 +++++++++++++++---- .../tercen/model/base/FileMetadataBase.java | 16 +++-- 2 files changed, 59 insertions(+), 17 deletions(-) diff --git a/src/com/tercen/examples/UploadData.java b/src/com/tercen/examples/UploadData.java index 21df336..8782bc1 100644 --- a/src/com/tercen/examples/UploadData.java +++ b/src/com/tercen/examples/UploadData.java @@ -2,6 +2,7 @@ import java.io.File; import java.io.IOException; +import java.util.Arrays; import org.apache.commons.io.FileUtils; @@ -19,6 +20,8 @@ public class UploadData { private static final String PROJECT_NAME = "myproject"; private static final String LOCALHOST_URL = "http://127.0.0.1:5402/"; + private static String type = "csv"; // "txt" + public static void main(String[] args) { TercenClient client = new TercenClient(UploadData.LOCALHOST_URL); @@ -26,23 +29,54 @@ public static void main(String[] args) { client.userService.connect2("tercen", "test", "test"); final Project project = Utils.getTestProject(client, TEAM_NAME, PROJECT_NAME); - FileDocument fileDoc = new FileDocument(); - fileDoc.name = "crabs_data"; - fileDoc.projectId = project.id; - fileDoc.acl.owner = project.acl.owner; - fileDoc.metadata = new CSVFileMetadata(); - fileDoc.metadata.contentType = "text/csv"; - // file.metadata = ","; - // file.metadata = "text/csv"; - fileDoc.metadata.contentEncoding = "text/csv"; + if (type.equals("csv")) { + FileDocument fileDoc = new FileDocument(); + String[] filenameParts = FILE_NAME.split("/"); + fileDoc.name = filenameParts[filenameParts.length - 1]; + fileDoc.projectId = project.id; + fileDoc.acl.owner = project.acl.owner; + fileDoc.metadata = new CSVFileMetadata(); + fileDoc.metadata.contentType = "text/csv"; + fileDoc.metadata.separator = ","; + fileDoc.metadata.quote = "\""; + fileDoc.metadata.contentEncoding = "iso-8859-1"; - File file = new File(FILE_NAME); - byte[] bytes = FileUtils.readFileToByteArray(file); + File file = new File(FILE_NAME); + byte[] bytes = FileUtils.readFileToByteArray(file); - FileDocument result = client.fileService.upload(fileDoc, bytes); + FileDocument result = client.fileService.upload(fileDoc, bytes); + System.out.println(result.toJson()); - System.out.println(result.toJson()); +// CSVTask to remove file +// CSVTask task = new CSVTask(); +// task.state = new InitState(); +// task.fileDocumentId = result.id; +// task.owner = project.acl.owner; +// task.projectId = project.id; +// +// Task newTask = client.taskService.create(task); +// client.taskService.runTask(newTask.id); +// newTask = client.taskService.waitDone(newTask.id); +// +// if (newTask.state instanceof FailedState) { +// System.out.println("CSVTask failed:"); +// } else { +// System.out.println("CSVTask completed"); +// } + byte[] bytesOutput = client.fileService.download(result.id); + if (Arrays.equals(bytes, bytesOutput)) { + System.out.println("OK"); + } else { + System.out.println("NOK"); + } + } else { + FileDocument file = new FileDocument(); + file.name = "hello.txt"; + file.projectId = project.id; + file = client.fileService.upload(file, "hello".getBytes()); + System.out.println(file.toJson()); + } } catch (ServiceError e) { e.printStackTrace(); } catch (IOException e) { diff --git a/src/com/tercen/model/base/FileMetadataBase.java b/src/com/tercen/model/base/FileMetadataBase.java index ea03b56..d5a55a8 100644 --- a/src/com/tercen/model/base/FileMetadataBase.java +++ b/src/com/tercen/model/base/FileMetadataBase.java @@ -1,10 +1,10 @@ package com.tercen.model.base; -import com.tercen.base.*; -import com.tercen.model.impl.*; -import java.util.ArrayList; import java.util.LinkedHashMap; -import java.util.Collection; + +import com.tercen.base.BaseObject; +import com.tercen.model.impl.CSVFileMetadata; +import com.tercen.model.impl.FileMetadata; public class FileMetadataBase extends BaseObject { @@ -13,6 +13,8 @@ public class FileMetadataBase extends BaseObject { public String contentEncoding; public String contentLanguage; public String md5Hash; + public String separator; + public String quote; public FileMetadataBase() { super(); @@ -21,6 +23,8 @@ public FileMetadataBase() { this.contentEncoding = ""; this.contentLanguage = ""; this.md5Hash = ""; + this.separator = ""; + this.quote = ""; } public FileMetadataBase(LinkedHashMap m) { @@ -32,6 +36,8 @@ public FileMetadataBase(LinkedHashMap m) { this.contentEncoding = (String) m.get(Vocabulary.contentEncoding_DP); this.contentLanguage = (String) m.get(Vocabulary.contentLanguage_DP); this.md5Hash = (String) m.get(Vocabulary.md5Hash_DP); + this.separator = (String) m.get(Vocabulary.separator_DP); + this.quote = (String) m.get(Vocabulary.quote_DP); } public static FileMetadata createFromJson(LinkedHashMap m) { @@ -63,6 +69,8 @@ public LinkedHashMap toJson() { m.put(Vocabulary.contentEncoding_DP, contentEncoding); m.put(Vocabulary.contentLanguage_DP, contentLanguage); m.put(Vocabulary.md5Hash_DP, md5Hash); + m.put(Vocabulary.separator_DP, separator); + m.put(Vocabulary.quote_DP, quote); return m; } } \ No newline at end of file From a45ad7d0a17509f1bedcca4f17f0547668c7e8e9 Mon Sep 17 00:00:00 2001 From: Ger Inberg Date: Tue, 17 Aug 2021 16:24:03 +0200 Subject: [PATCH 5/8] update uploaddata example --- src/com/tercen/examples/UploadData.java | 64 ++++------------ src/com/tercen/util/Utils.java | 98 ++++++++++++++++++++++++- 2 files changed, 112 insertions(+), 50 deletions(-) diff --git a/src/com/tercen/examples/UploadData.java b/src/com/tercen/examples/UploadData.java index 8782bc1..dac8b56 100644 --- a/src/com/tercen/examples/UploadData.java +++ b/src/com/tercen/examples/UploadData.java @@ -1,13 +1,8 @@ package com.tercen.examples; -import java.io.File; import java.io.IOException; -import java.util.Arrays; - -import org.apache.commons.io.FileUtils; import com.tercen.client.impl.TercenClient; -import com.tercen.model.impl.CSVFileMetadata; import com.tercen.model.impl.FileDocument; import com.tercen.model.impl.Project; import com.tercen.service.ServiceError; @@ -18,64 +13,35 @@ public class UploadData { private static final String FILE_NAME = "src/main/resources/crabs-long.csv"; private static final String TEAM_NAME = "test-team"; private static final String PROJECT_NAME = "myproject"; - private static final String LOCALHOST_URL = "http://127.0.0.1:5402/"; - - private static String type = "csv"; // "txt" + private static final String LOCALHOST_URL = "http://10.0.2.2:5402/"; + private static final String DOMAIN = "tercen"; + private static final String USERNAME = "test"; + private static final String PASSWORD = "test"; + + private static String type = "zip"; // either "zip", "csv" or "txt" public static void main(String[] args) { TercenClient client = new TercenClient(UploadData.LOCALHOST_URL); try { client.userService.connect2("tercen", "test", "test"); - final Project project = Utils.getTestProject(client, TEAM_NAME, PROJECT_NAME); + final Project project = Utils.getProject(client, TEAM_NAME, PROJECT_NAME); if (type.equals("csv")) { - FileDocument fileDoc = new FileDocument(); - String[] filenameParts = FILE_NAME.split("/"); - fileDoc.name = filenameParts[filenameParts.length - 1]; - fileDoc.projectId = project.id; - fileDoc.acl.owner = project.acl.owner; - fileDoc.metadata = new CSVFileMetadata(); - fileDoc.metadata.contentType = "text/csv"; - fileDoc.metadata.separator = ","; - fileDoc.metadata.quote = "\""; - fileDoc.metadata.contentEncoding = "iso-8859-1"; - - File file = new File(FILE_NAME); - byte[] bytes = FileUtils.readFileToByteArray(file); - - FileDocument result = client.fileService.upload(fileDoc, bytes); + FileDocument result = Utils.uploadCsvFile(LOCALHOST_URL, TEAM_NAME, PROJECT_NAME, DOMAIN, USERNAME, PASSWORD, FILE_NAME); System.out.println(result.toJson()); - -// CSVTask to remove file -// CSVTask task = new CSVTask(); -// task.state = new InitState(); -// task.fileDocumentId = result.id; -// task.owner = project.acl.owner; -// task.projectId = project.id; -// -// Task newTask = client.taskService.create(task); -// client.taskService.runTask(newTask.id); -// newTask = client.taskService.waitDone(newTask.id); -// -// if (newTask.state instanceof FailedState) { -// System.out.println("CSVTask failed:"); -// } else { -// System.out.println("CSVTask completed"); -// } - - byte[] bytesOutput = client.fileService.download(result.id); - if (Arrays.equals(bytes, bytesOutput)) { - System.out.println("OK"); - } else { - System.out.println("NOK"); - } - } else { + System.out.println("CSV file uploaded"); + } else if (type.equals("zip")) { + FileDocument result = Utils.uploadZipFile(LOCALHOST_URL, TEAM_NAME, PROJECT_NAME, DOMAIN, USERNAME, PASSWORD, FILE_NAME); + System.out.println(result.toJson()); + System.out.println("Zip file uploaded"); + } else if (type.equals("txt")) { FileDocument file = new FileDocument(); file.name = "hello.txt"; file.projectId = project.id; file = client.fileService.upload(file, "hello".getBytes()); System.out.println(file.toJson()); + System.out.println("Txt file uploaded"); } } catch (ServiceError e) { e.printStackTrace(); diff --git a/src/com/tercen/util/Utils.java b/src/com/tercen/util/Utils.java index 4a5b790..5248de8 100644 --- a/src/com/tercen/util/Utils.java +++ b/src/com/tercen/util/Utils.java @@ -1,15 +1,34 @@ package com.tercen.util; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; import java.util.List; import java.util.Optional; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import org.apache.commons.io.FileUtils; import com.tercen.client.impl.TercenClient; +import com.tercen.model.impl.CSVFileMetadata; +import com.tercen.model.impl.FileDocument; import com.tercen.model.impl.Project; +import com.tercen.model.impl.ProjectDocument; import com.tercen.service.ServiceError; public class Utils { + + private static final String Separator = "/"; + + private static String getFilename(String fullFileName) { + String[] filenameParts = fullFileName.replaceAll(Pattern.quote(Utils.Separator), "\\\\").split("\\\\"); + return filenameParts[filenameParts.length - 1]; + } - public static Project getTestProject(TercenClient client, String teamOrUser, String projectName) + public static Project getProject(TercenClient client, String teamOrUser, String projectName) throws ServiceError { List startKey = List.of(teamOrUser, false, "2000"); @@ -30,4 +49,81 @@ public static Project getTestProject(TercenClient client, String teamOrUser, Str return client.projectService.create(new_project); } + + private static void removeProjectFileIfExists(TercenClient client, Project project, String filename) throws ServiceError { + List projectDocs = client.projectDocumentService.findProjectObjectsByLastModifiedDate(null, null, 100, 0, true, false); + if (projectDocs.size() > 0) { + projectDocs = projectDocs + .stream() + .filter(p -> p.projectId.equals(project.id)) + .filter(p -> p.name.equals(filename)) + .collect(Collectors.toList()); + + projectDocs.forEach(p -> { + try { + client.fileService.delete(p.id, p.rev); + } catch (ServiceError e) { + e.printStackTrace(); + } + }); + } + } + + public static FileDocument uploadZipFile(String url, String teamName, String projectName, String domain, String username, String password, String fullFileName) throws ServiceError, IOException { + // Write data to tercen + TercenClient client = new TercenClient(url); + client.userService.connect2(domain, username, password); + Project project = getProject(client, teamName, projectName); + + FileDocument fileDoc = new FileDocument(); + String filename = getFilename(fullFileName); + int index = filename.lastIndexOf("."); + String ext = filename.substring(index); + String outFilename = filename.replace(ext, ".zip"); + fileDoc.name = outFilename; + fileDoc.projectId = project.id; + fileDoc.acl.owner = project.acl.owner; + fileDoc.metadata.contentType = "application/zip"; + fileDoc.metadata.contentEncoding = "zip,iso-8859-1"; + File file = new File(fullFileName); + + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ZipOutputStream zos = new ZipOutputStream(bos); + ZipEntry entry = new ZipEntry(file.getName()); + byte[] bytes = FileUtils.readFileToByteArray(file); + zos.putNextEntry(entry); + zos.write(bytes, 0, bytes.length); + zos.closeEntry(); + zos.close(); + + byte[] zipBytes = bos.toByteArray(); + bos.close(); + // remove existing file and upload new file + removeProjectFileIfExists(client, project, outFilename); + return client.fileService.upload(fileDoc, zipBytes); + } + + public static FileDocument uploadCsvFile(String url, String teamName, String projectName, String domain, String username, String password, String fullFileName) throws ServiceError, IOException { + // Write data to tercen + TercenClient client = new TercenClient(url); + client.userService.connect2(domain, username, password); + Project project = getProject(client, teamName, projectName); + + FileDocument fileDoc = new FileDocument(); + String filename = getFilename(fullFileName); + fileDoc.name = filename; + fileDoc.projectId = project.id; + fileDoc.acl.owner = project.acl.owner; + fileDoc.metadata = new CSVFileMetadata(); + fileDoc.metadata.contentType = "text/csv"; + fileDoc.metadata.separator = ","; + fileDoc.metadata.quote = "\""; + fileDoc.metadata.contentEncoding = "iso-8859-1"; + File file = new File(fullFileName); + byte[] bytes = FileUtils.readFileToByteArray(file); + + // remove existing file and upload new file + removeProjectFileIfExists(client, project, filename); + return client.fileService.upload(fileDoc, bytes); + } } From 11b23a41623e8c15d4aac4dc1a47dcd8802bf6a4 Mon Sep 17 00:00:00 2001 From: Ger Inberg Date: Tue, 24 Aug 2021 10:50:43 +0200 Subject: [PATCH 6/8] add example --- src/com/tercen/examples/SelectData.java | 40 +++++++++++++++++++++++++ src/com/tercen/examples/UploadData.java | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/com/tercen/examples/SelectData.java diff --git a/src/com/tercen/examples/SelectData.java b/src/com/tercen/examples/SelectData.java new file mode 100644 index 0000000..8c4c5ab --- /dev/null +++ b/src/com/tercen/examples/SelectData.java @@ -0,0 +1,40 @@ +package com.tercen.examples; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import com.tercen.client.impl.TercenClient; +import com.tercen.model.impl.Schema; +import com.tercen.model.impl.Table; +import com.tercen.service.ServiceError; + +public class SelectData { + + private static final String LOCALHOST_URL = "http://10.0.2.2:5402/"; + private static final String DOMAIN = "tercen"; + private static final String USERNAME = "test"; + private static final String PASSWORD = "test"; + private static final String TABLE_ID = "06b38fe91c2ed72a148b3fa38702b81e"; + + public static void main(String[] args) { + TercenClient client = new TercenClient(SelectData.LOCALHOST_URL); + + try { + client.userService.connect2(DOMAIN, USERNAME, PASSWORD); + + Schema schema = client.tableSchemaService.get(TABLE_ID); + List list = schema.columns.stream().map(c -> c.name).collect(Collectors.toList()); + ArrayList cnames = new ArrayList(list); + + Table result = client.tableSchemaService.select(TABLE_ID, cnames, 0, 100); + double[] colvals = (double []) result.columns.get(0).values; + for (double d : (double[]) colvals) { + System.out.println(d); + } + + } catch (ServiceError e) { + e.printStackTrace(); + } + } +} diff --git a/src/com/tercen/examples/UploadData.java b/src/com/tercen/examples/UploadData.java index dac8b56..5e993a3 100644 --- a/src/com/tercen/examples/UploadData.java +++ b/src/com/tercen/examples/UploadData.java @@ -24,7 +24,7 @@ public static void main(String[] args) { TercenClient client = new TercenClient(UploadData.LOCALHOST_URL); try { - client.userService.connect2("tercen", "test", "test"); + client.userService.connect2(DOMAIN, USERNAME, PASSWORD); final Project project = Utils.getProject(client, TEAM_NAME, PROJECT_NAME); if (type.equals("csv")) { From a79a0cedcc93a5585f14560d4156075b95bc749c Mon Sep 17 00:00:00 2001 From: Ger Inberg Date: Tue, 24 Aug 2021 16:00:07 +0200 Subject: [PATCH 7/8] revert changes FileMetadataBase --- src/com/tercen/model/base/FileMetadataBase.java | 8 -------- src/com/tercen/util/Utils.java | 4 ++-- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/com/tercen/model/base/FileMetadataBase.java b/src/com/tercen/model/base/FileMetadataBase.java index d5a55a8..0f6b98f 100644 --- a/src/com/tercen/model/base/FileMetadataBase.java +++ b/src/com/tercen/model/base/FileMetadataBase.java @@ -13,8 +13,6 @@ public class FileMetadataBase extends BaseObject { public String contentEncoding; public String contentLanguage; public String md5Hash; - public String separator; - public String quote; public FileMetadataBase() { super(); @@ -23,8 +21,6 @@ public FileMetadataBase() { this.contentEncoding = ""; this.contentLanguage = ""; this.md5Hash = ""; - this.separator = ""; - this.quote = ""; } public FileMetadataBase(LinkedHashMap m) { @@ -36,8 +32,6 @@ public FileMetadataBase(LinkedHashMap m) { this.contentEncoding = (String) m.get(Vocabulary.contentEncoding_DP); this.contentLanguage = (String) m.get(Vocabulary.contentLanguage_DP); this.md5Hash = (String) m.get(Vocabulary.md5Hash_DP); - this.separator = (String) m.get(Vocabulary.separator_DP); - this.quote = (String) m.get(Vocabulary.quote_DP); } public static FileMetadata createFromJson(LinkedHashMap m) { @@ -69,8 +63,6 @@ public LinkedHashMap toJson() { m.put(Vocabulary.contentEncoding_DP, contentEncoding); m.put(Vocabulary.contentLanguage_DP, contentLanguage); m.put(Vocabulary.md5Hash_DP, md5Hash); - m.put(Vocabulary.separator_DP, separator); - m.put(Vocabulary.quote_DP, quote); return m; } } \ No newline at end of file diff --git a/src/com/tercen/util/Utils.java b/src/com/tercen/util/Utils.java index 5248de8..1a20daf 100644 --- a/src/com/tercen/util/Utils.java +++ b/src/com/tercen/util/Utils.java @@ -116,8 +116,8 @@ public static FileDocument uploadCsvFile(String url, String teamName, String pro fileDoc.acl.owner = project.acl.owner; fileDoc.metadata = new CSVFileMetadata(); fileDoc.metadata.contentType = "text/csv"; - fileDoc.metadata.separator = ","; - fileDoc.metadata.quote = "\""; + ((CSVFileMetadata) fileDoc.metadata).separator = ","; + ((CSVFileMetadata) fileDoc.metadata).quote = "\""; fileDoc.metadata.contentEncoding = "iso-8859-1"; File file = new File(fullFileName); byte[] bytes = FileUtils.readFileToByteArray(file); From e75075847d18d88bac86efb77f727e341f3c51f6 Mon Sep 17 00:00:00 2001 From: Ger Inberg Date: Tue, 24 Aug 2021 16:04:33 +0200 Subject: [PATCH 8/8] revert FileMetadataBase --- src/com/tercen/model/base/FileMetadataBase.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/tercen/model/base/FileMetadataBase.java b/src/com/tercen/model/base/FileMetadataBase.java index 0f6b98f..ea03b56 100644 --- a/src/com/tercen/model/base/FileMetadataBase.java +++ b/src/com/tercen/model/base/FileMetadataBase.java @@ -1,10 +1,10 @@ package com.tercen.model.base; +import com.tercen.base.*; +import com.tercen.model.impl.*; +import java.util.ArrayList; import java.util.LinkedHashMap; - -import com.tercen.base.BaseObject; -import com.tercen.model.impl.CSVFileMetadata; -import com.tercen.model.impl.FileMetadata; +import java.util.Collection; public class FileMetadataBase extends BaseObject {