package com.thinkbiganalytics.policy; /*- * #%L * thinkbig-field-policy-core * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed 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. * #L% */ import com.fasterxml.jackson.databind.ObjectMapper; import com.thinkbiganalytics.policy.rest.model.FieldPolicyBuilder; import com.thinkbiganalytics.policy.rest.model.FieldStandardizationRule; import com.thinkbiganalytics.policy.rest.model.FieldValidationRule; import com.thinkbiganalytics.policy.standardization.DateTimeStandardizer; import com.thinkbiganalytics.policy.standardization.DefaultValueStandardizer; import com.thinkbiganalytics.policy.validation.RangeValidator; import com.thinkbiganalytics.standardization.transform.StandardizationAnnotationTransformer; import com.thinkbiganalytics.validation.transform.ValidatorAnnotationTransformer; import org.junit.Assert; import org.junit.Test; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; /** */ public class TestJsonPolicies { @Test public void testJson() throws IOException { List<com.thinkbiganalytics.policy.rest.model.FieldPolicy> fieldPolicies = new ArrayList<>(); List<FieldStandardizationRule> standardizationPolicyList = new ArrayList<>(); List<FieldValidationRule> validationRules = new ArrayList<>(); DefaultValueStandardizer defaultValueStandardizer = new DefaultValueStandardizer("My Default"); standardizationPolicyList.add(StandardizationAnnotationTransformer.instance().toUIModel(defaultValueStandardizer)); DateTimeStandardizer dateTimeStandardizer = new DateTimeStandardizer("MM/DD/YYYY", DateTimeStandardizer.OutputFormats.DATETIME_NOMILLIS); standardizationPolicyList.add(StandardizationAnnotationTransformer.instance().toUIModel(dateTimeStandardizer)); RangeValidator validator = new RangeValidator(10, 20); validationRules.add(ValidatorAnnotationTransformer.instance().toUIModel(validator)); fieldPolicies.add(new FieldPolicyBuilder("field1").addStandardization(standardizationPolicyList).addValidations( validationRules).build()); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(fieldPolicies); FieldPoliciesJsonTransformer fieldPolicyTransformer = new FieldPoliciesJsonTransformer(json); Map<String, com.thinkbiganalytics.policy.FieldPolicy> policyMap = fieldPolicyTransformer.buildPolicies(); com.thinkbiganalytics.policy.FieldPolicy field1Policy = policyMap.get("field1"); Assert.assertEquals(2, field1Policy.getStandardizationPolicies().size()); Assert.assertEquals(1, field1Policy.getValidators().size()); } @Test public void test2() { String json = "[{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"registration_dttm\",\"standardization\":[],\"validation\":[{\"name\":\"Timestamp\",\"displayName\":\"Timestamp\",\"description\":\"Validate ISO8601 format\",\"properties\":[],\"objectClassType\":\"com.thinkbiganalytics.policy.validation.TimestampValidator\",\"regex\":null,\"type\":null}]},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"id\",\"standardization\":null,\"validation\":null},{\"partition\":false,\"profile\":true,\"index\":true,\"fieldName\":\"first_name\",\"standardization\":[{\"name\":\"Uppercase\",\"displayName\":\"Uppercase\",\"description\":\"Convert string to uppercase\",\"properties\":[],\"objectClassType\":\"com.thinkbiganalytics.policy.standardization.UppercaseStandardizer\"}],\"validation\":null},{\"partition\":false,\"profile\":true,\"index\":true,\"fieldName\":\"last_name\",\"standardization\":null,\"validation\":null},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"email\",\"standardization\":null,\"validation\":[{\"name\":\"Email\",\"displayName\":\"Email\",\"description\":\"Valid email address\",\"properties\":[],\"objectClassType\":\"com.thinkbiganalytics.policy.validation.EmailValidator\",\"regex\":null,\"type\":null}]},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"gender\",\"standardization\":null,\"validation\":[{\"name\":\"Lookup\",\"displayName\":\"Lookup\",\"description\":\"Must be contained in the list\",\"properties\":[{\"name\":\"List\",\"displayName\":\"List\",\"value\":\"Male,Female\",\"placeholder\":\"\",\"type\":\"string\",\"hint\":\"Comma separated list of values\",\"objectProperty\":\"lookupList\",\"selectableValues\":[]}],\"objectClassType\":\"com.thinkbiganalytics.policy.validation.LookupValidator\",\"regex\":null,\"type\":null}]},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"ip_address\",\"standardization\":null,\"validation\":[{\"name\":\"IP Address\",\"displayName\":\"IP Address\",\"description\":\"Valid IP Address\",\"properties\":[],\"objectClassType\":\"com.thinkbiganalytics.policy.validation.IPAddressValidator\",\"regex\":null,\"type\":null}]},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"cc\",\"standardization\":[],\"validation\":[]},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"country\",\"standardization\":[],\"validation\":null},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"birthdate\",\"standardization\":[{\"name\":\"Date/Time\",\"displayName\":\"Date/Time\",\"description\":\"Converts any date to ISO8601\",\"properties\":[{\"name\":\"Date Format\",\"displayName\":\"Date Format\",\"value\":\"MM/dd/YYYY\",\"placeholder\":\"\",\"type\":\"string\",\"hint\":\"Format Example: MM/DD/YYYY\",\"objectProperty\":\"inputDateFormat\",\"selectableValues\":[]},{\"name\":\"Output Format\",\"displayName\":\"Output Format\",\"value\":\"DATE_ONLY\",\"placeholder\":\"\",\"type\":\"select\",\"hint\":\"Choose an output format\",\"objectProperty\":\"outputFormat\",\"selectableValues\":[{\"label\":\"DATE_ONLY\",\"value\":\"DATE_ONLY\"},{\"label\":\"DATETIME\",\"value\":\"DATETIME\"},{\"label\":\"DATETIME_NOMILLIS\",\"value\":\"DATETIME_NOMILLIS\"}]}],\"objectClassType\":\"com.thinkbiganalytics.policy.standardization.DateTimeStandardizer\"}],\"validation\":null},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"salary\",\"standardization\":[{\"name\":\"Strip Non Numeric\",\"displayName\":\"Strip Non Numeric\",\"description\":\"Remove any characters that are not numeric\",\"properties\":[],\"objectClassType\":\"com.thinkbiganalytics.policy.standardization.StripNonNumeric\"}],\"validation\":null},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"title\",\"standardization\":null,\"validation\":null},{\"partition\":false,\"profile\":true,\"index\":false,\"fieldName\":\"comments\",\"standardization\":[{\"name\":\"Uppercase\",\"displayName\":\"Uppercase\",\"description\":\"Convert string to uppercase\",\"properties\":[],\"objectClassType\":\"com.thinkbiganalytics.policy.standardization.UppercaseStandardizer\"}],\"validation\":null}]"; FieldPoliciesJsonTransformer fieldPolicyTransformer = new FieldPoliciesJsonTransformer(json); Map<String, com.thinkbiganalytics.policy.FieldPolicy> policyMap = fieldPolicyTransformer.buildPolicies(); int i = 0; } }