/**
* personium.io
* Copyright 2014 FUJITSU LIMITED
*
* 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.
*/
package com.fujitsu.dc.test.jersey.box.odatacol;
import javax.ws.rs.core.MediaType;
import org.apache.http.HttpStatus;
import org.odata4j.edm.EdmSimpleType;
import com.fujitsu.dc.test.jersey.AbstractCase;
import com.fujitsu.dc.test.jersey.ODataCommon;
import com.fujitsu.dc.test.setup.Setup;
import com.fujitsu.dc.test.unit.core.UrlUtils;
import com.fujitsu.dc.test.utils.EntityTypeUtils;
import com.fujitsu.dc.test.utils.UserDataUtils;
/**
* UserDataComplexTypeのUtilsクラス.
*/
public final class UserDataComplexTypeUtils {
/** EntityType名. */
public static final String ENTITY_TYPE_NAME = "entityType";
/** ComplexType名. */
public static final String COMPLEX_TYPE_NAME = "complexType1st";
/** entityTypeの文字列プロパティ名. */
public static final String ET_STRING_PROP = "etStrProp";
/** entityTypeのComplexTypeプロパティ名. */
public static final String ET_CT1ST_PROP = "etComplexProp";
/** complexType1stの文字列プロパティ名. */
public static final String CT1ST_STRING_PROP = "ct1stStrProp";
/**
* コンストラクタ.
*/
private UserDataComplexTypeUtils() {
}
/**
* ComplexTypeスキーマを作成する.
* @param entityTypeName エンティティタイプ名
* @param complexTypeName コンプレックスタイプ名
* @param propertyName プロパティ名
* @param complexTypePropertyName コンプレックスタイププロパティ名
* @param innnerComplexTypePropertyName インナーコンプレックスタイププロパティ名
*/
public static void createComplexTypeSchema(String entityTypeName,
String complexTypeName,
String propertyName,
String complexTypePropertyName,
String innnerComplexTypePropertyName) {
createComplexTypeSchema(entityTypeName,
complexTypeName,
propertyName,
complexTypePropertyName,
innnerComplexTypePropertyName,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
}
/**
* ComplexTypeスキーマを作成する.
* @param entityTypeName エンティティタイプ名
* @param complexTypeName コンプレックスタイプ名
* @param propertyName プロパティ名
* @param complexTypePropertyName コンプレックスタイププロパティ名
* @param innnerComplexTypePropertyName インナーコンプレックスタイププロパティ名
* @param typeName スキーマタイプ名
*/
public static void createComplexTypeSchema(String entityTypeName,
String complexTypeName,
String propertyName,
String complexTypePropertyName,
String innnerComplexTypePropertyName,
String typeName) {
// EntityType作成
EntityTypeUtils.create(Setup.TEST_CELL1, AbstractCase.MASTER_TOKEN_NAME,
Setup.TEST_ODATA, entityTypeName, HttpStatus.SC_CREATED);
// ComplexType作成
UserDataUtils.createComplexType(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, complexTypeName);
// Property作成
UserDataUtils.createProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, propertyName, entityTypeName,
EdmSimpleType.STRING.getFullyQualifiedTypeName(), false, null, null, false, null);
UserDataUtils.createProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, complexTypePropertyName, entityTypeName,
complexTypeName, false, null, null, false, null);
// complexTypeProperty作成
UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, innnerComplexTypePropertyName, complexTypeName,
typeName, false, null, null);
}
/**
* ComplexTypeSchemaを削除する.
*/
public static void deleteComplexTypeSchema() {
deleteComplexTypeSchema(UserDataComplexTypeUtils.ENTITY_TYPE_NAME,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME,
UserDataComplexTypeUtils.ET_STRING_PROP,
UserDataComplexTypeUtils.ET_CT1ST_PROP,
UserDataComplexTypeUtils.CT1ST_STRING_PROP);
}
/**
* ComplexTypeSchemaを削除する.
* @param entityTypeName エンティティタイプ名
* @param complexTypeName コンプレックスタイプ名
* @param stringPropetyName 文字列型プロパティ名
* @param complexPropertyName コンプレックス型プロパティ名
* @param complexStringPropertyName コンプレックスタイプ内の文字列型プロパティ名
*/
public static void deleteComplexTypeSchema(String entityTypeName, String complexTypeName,
String stringPropetyName, String complexPropertyName, String complexStringPropertyName) {
String ctlocationUrl = UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
complexTypeName);
String propStrlocationUrl = UrlUtils.property(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
stringPropetyName, entityTypeName);
String propCtlocationUrl = UrlUtils.property(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
complexPropertyName, entityTypeName);
String ctplocationUrl = UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
complexStringPropertyName, complexTypeName);
// 作成したPropertyを削除
ODataCommon.deleteOdataResource(propStrlocationUrl);
ODataCommon.deleteOdataResource(propCtlocationUrl);
// 作成したComplexTypePropertyを削除
ODataCommon.deleteOdataResource(ctplocationUrl);
// 作成したComplexTypeを削除
ODataCommon.deleteOdataResource(ctlocationUrl);
// 作成したEntityTypeを削除
EntityTypeUtils.delete(Setup.TEST_ODATA, AbstractCase.MASTER_TOKEN_NAME,
MediaType.APPLICATION_JSON, entityTypeName, Setup.TEST_CELL1, -1);
}
/**
* シンプル型の配列スキーマを作成する.
*/
public static void createSimpleArraySchema() {
UserDataComplexTypeUtils.createComplexTypeSchema(ENTITY_TYPE_NAME, COMPLEX_TYPE_NAME, ET_STRING_PROP,
ET_CT1ST_PROP, CT1ST_STRING_PROP);
// 配列Property作成
UserDataUtils.createProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "etListPropStr", ENTITY_TYPE_NAME,
EdmSimpleType.STRING.getFullyQualifiedTypeName(), false, null, "List", false, null);
UserDataUtils.createProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "etListPropInt", ENTITY_TYPE_NAME,
EdmSimpleType.INT32.getFullyQualifiedTypeName(), false, null, "List", false, null);
UserDataUtils.createProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "etListPropSingle", ENTITY_TYPE_NAME,
EdmSimpleType.SINGLE.getFullyQualifiedTypeName(), false, null, "List", false, null);
UserDataUtils.createProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "etListPropBoolean", ENTITY_TYPE_NAME,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName(), false, null, "List", false, null);
}
/**
* シンプル型の配列スキーマを削除する.
*/
public static void deleteSimpleArraySchema() {
// 作成したPropertyを削除
ODataCommon.deleteOdataResource(UrlUtils.property(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "etListPropStr", ENTITY_TYPE_NAME));
ODataCommon.deleteOdataResource(UrlUtils.property(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "etListPropInt", ENTITY_TYPE_NAME));
ODataCommon.deleteOdataResource(UrlUtils.property(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "etListPropSingle", ENTITY_TYPE_NAME));
ODataCommon.deleteOdataResource(UrlUtils.property(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "etListPropBoolean", ENTITY_TYPE_NAME));
deleteComplexTypeSchema();
}
/**
* Complex型の配列スキーマを作成する.
*/
public static void createComplexArraySchema() {
UserDataComplexTypeUtils.createComplexTypeSchema(UserDataComplexTypeUtils.ENTITY_TYPE_NAME,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME, UserDataComplexTypeUtils.ET_STRING_PROP,
UserDataComplexTypeUtils.ET_CT1ST_PROP, UserDataComplexTypeUtils.CT1ST_STRING_PROP);
// ComplexTypeの配列Property作成
UserDataUtils.createComplexType(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "ListComplexType");
// Property作成
UserDataUtils.createProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "listComplexType", UserDataComplexTypeUtils.ENTITY_TYPE_NAME,
"ListComplexType", false, null, "List", false, null);
// complexTypeProperty作成
UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "lctStr", "ListComplexType",
EdmSimpleType.STRING.getFullyQualifiedTypeName(), false, null, null);
}
/**
* Complex型の配列スキーマを削除する.
*/
public static void deleteComplexArraySchema() {
// 作成したPropertyを削除
ODataCommon.deleteOdataResource(UrlUtils.complexTypeProperty(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "lctStr", "ListComplexType"));
ODataCommon.deleteOdataResource(UrlUtils.property(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "listComplexType",
UserDataComplexTypeUtils.ENTITY_TYPE_NAME));
ODataCommon.deleteOdataResource(UrlUtils.complexType(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "ListComplexType"));
UserDataComplexTypeUtils.deleteComplexTypeSchema();
}
/**
* Complex内のシンプル型の配列スキーマを削除する.
*/
public static void createSimpleArraySchemaInComplex() {
UserDataComplexTypeUtils.createComplexTypeSchema(UserDataComplexTypeUtils.ENTITY_TYPE_NAME,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME, UserDataComplexTypeUtils.ET_STRING_PROP,
UserDataComplexTypeUtils.ET_CT1ST_PROP, UserDataComplexTypeUtils.CT1ST_STRING_PROP);
// 配列Property作成
UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "ctListPropStr", UserDataComplexTypeUtils.COMPLEX_TYPE_NAME,
EdmSimpleType.STRING.getFullyQualifiedTypeName(), false, null, "List");
UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "ctListPropInt", UserDataComplexTypeUtils.COMPLEX_TYPE_NAME,
EdmSimpleType.INT32.getFullyQualifiedTypeName(), false, null, "List");
UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "ctListPropSingle", UserDataComplexTypeUtils.COMPLEX_TYPE_NAME,
EdmSimpleType.SINGLE.getFullyQualifiedTypeName(), false, null, "List");
UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "ctListPropBoolean", UserDataComplexTypeUtils.COMPLEX_TYPE_NAME,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName(), false, null, "List");
}
/**
* Complex内のシンプル型の配列スキーマを削除する.
*/
public static void deleteSimpleArraySchemaInComplex() {
// 作成したPropertyを削除
ODataCommon.deleteOdataResource(UrlUtils.complexTypeProperty(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "ctListPropStr",
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME));
ODataCommon.deleteOdataResource(UrlUtils.complexTypeProperty(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "ctListPropInt",
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME));
ODataCommon.deleteOdataResource(UrlUtils.complexTypeProperty(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "ctListPropSingle",
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME));
ODataCommon.deleteOdataResource(UrlUtils.complexTypeProperty(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "ctListPropBoolean",
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME));
UserDataComplexTypeUtils.deleteComplexTypeSchema();
}
/**
* Complex内のComplex型の配列スキーマを削除する.
*/
public static void createComplexArraySchemaInComplex() {
UserDataComplexTypeUtils.createComplexTypeSchema(UserDataComplexTypeUtils.ENTITY_TYPE_NAME,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME, UserDataComplexTypeUtils.ET_STRING_PROP,
UserDataComplexTypeUtils.ET_CT1ST_PROP, UserDataComplexTypeUtils.CT1ST_STRING_PROP);
// ComplexTypeの配列Property作成
UserDataUtils.createComplexType(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "ListComplexType");
// complexTypeProperty作成
UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "listComplexType", UserDataComplexTypeUtils.COMPLEX_TYPE_NAME,
"ListComplexType", false, null, "List");
// complexTypeProperty作成
UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, "lctStr", "ListComplexType",
EdmSimpleType.STRING.getFullyQualifiedTypeName(), false, null, null);
}
/**
* Complex内のComplex型の配列スキーマを削除する.
*/
public static void deleteComplexArraySchemaInComplex() {
// 作成したPropertyを削除
ODataCommon.deleteOdataResource(UrlUtils.complexTypeProperty(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "lctStr", "ListComplexType"));
ODataCommon.deleteOdataResource(UrlUtils.complexTypeProperty(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "listComplexType",
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME));
ODataCommon.deleteOdataResource(UrlUtils.complexType(
Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, "ListComplexType"));
UserDataComplexTypeUtils.deleteComplexTypeSchema();
}
}