1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.chemistry.opencmis.commons.definitions;
20
21 import java.io.Serializable;
22 import java.util.Map;
23
24 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
25 import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
26
27 /**
28 * Base type definition interface.
29 *
30 * @author <a href="mailto:fmueller@opentext.com">Florian Müller</a>
31 *
32 */
33 public interface TypeDefinition extends Serializable, ExtensionsData {
34
35 /**
36 * Returns the type id.
37 *
38 * @return the type id
39 */
40 String getId();
41
42 /**
43 * Returns the local name.
44 *
45 * @return the local name
46 */
47 String getLocalName();
48
49 /**
50 * Returns the local namespace.
51 *
52 * @return the local namespace
53 */
54 String getLocalNamespace();
55
56 /**
57 * Returns the display name.
58 *
59 * @return the display name
60 */
61 String getDisplayName();
62
63 /**
64 * Returns the query name
65 *
66 * @return the query name
67 */
68 String getQueryName();
69
70 /**
71 * Returns the property description.
72 *
73 * @return returns the description
74 */
75 String getDescription();
76
77 /**
78 * Returns the base object type id.
79 *
80 * @return the base object type id
81 */
82 BaseTypeId getBaseTypeId();
83
84 /**
85 * Returns the parent type id.
86 *
87 * @return the parent type id or <code>null</code> if the type is a base
88 * type
89 */
90 String getParentTypeId();
91
92 /**
93 * Returns if an object of this type can be created.
94 *
95 * @return <code>true</code> if an object of this type can be created;
96 * <code>false</code> if creation of objects of this type is not
97 * possible; <code>null</code> - unknown (noncompliant repository)
98 */
99 Boolean isCreatable();
100
101 /**
102 * Returns if an object of this type can be filed.
103 *
104 * @return <code>true</code> if an object of this type can be filed;
105 * <code>false</code> if an object of this type cannot be filed;
106 * <code>null</code> - unknown (noncompliant repository)
107 */
108 Boolean isFileable();
109
110 /**
111 * Returns if this type is queryable.
112 *
113 * @return <code>true</code> if this type is queryable; <code>false</code>
114 * if this type is not queryable; <code>null</code> - unknown
115 * (noncompliant repository)
116 */
117 Boolean isQueryable();
118
119 /**
120 * Returns if this type is full text indexed.
121 *
122 * @return <code>true</code> if this type is full text indexed;
123 * <code>false</code> if this type is not full text indexed;
124 * <code>null</code> - unknown (noncompliant repository)
125 */
126 Boolean isFulltextIndexed();
127
128 /**
129 * Returns if this type is included in queries that query the super type.
130 *
131 * @return <code>true</code> if this type is included; <code>false</code> if
132 * this type is not included; <code>null</code> - unknown
133 * (noncompliant repository)
134 */
135 Boolean isIncludedInSupertypeQuery();
136
137 /**
138 * Returns if objects of this type are controllable by policies.
139 *
140 * @return <code>true</code> if objects are controllable by policies;
141 * <code>false</code> if objects are not controllable by policies;
142 * <code>null</code> - unknown (noncompliant repository)
143 */
144 Boolean isControllablePolicy();
145
146 /**
147 * Returns if objects of this type are controllable by ACLs.
148 *
149 * @return <code>true</code> if objects are controllable by ACLs;
150 * <code>false</code> if objects are not controllable by ACLs;
151 * <code>null</code> - unknown (noncompliant repository)
152 */
153 Boolean isControllableAcl();
154
155 /**
156 * Returns the property definitions of this type.
157 *
158 * @return the property definitions or <code>null</code> if the property
159 * definitions were not requested
160 */
161 Map<String, PropertyDefinition<?>> getPropertyDefinitions();
162 }