Skip to content
Snippets Groups Projects
Commit a4f7f8ea authored by Johannes Hörmann's avatar Johannes Hörmann
Browse files

Merge origin/master into object-relation

Conflicts:
	entity/Contract_entity/Contract_entity.aod
parents 61b67803 c91cbf56
No related branches found
No related tags found
No related merge requests found
Showing
with 222 additions and 27 deletions
......@@ -197,7 +197,7 @@
<dependency>
<name>dependency</name>
<entityName>Keyword_entity</entityName>
<fieldName>generic_dfi</fieldName>
<fieldName>SpecificContainerKeywords</fieldName>
</dependency>
<children>
<entityParameter>
......
<?xml version="1.0" encoding="UTF-8"?>
<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.0">
<name>Attribute_entity</name>
<title>Attributes</title>
<title>Attribute</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<documentation>%aditoprj%/entity/Attribute_entity/documentation.adoc</documentation>
<iconId>VAADIN:TAG</iconId>
......
......@@ -49,18 +49,18 @@
<entityField>
<name>CONTRACTSTATUS</name>
<title>${CONTRACT_STATUS}</title>
<possibleItemsProcess>%aditoprj%/entity/Contract_entity/entityfields/contractstatus/possibleItemsProcess.js</possibleItemsProcess>
<consumer>ContractStates</consumer>
</entityField>
<entityField>
<name>CONTRACTTYPE</name>
<title>Type of contract</title>
<possibleItemsProcess>%aditoprj%/entity/Contract_entity/entityfields/contracttype/possibleItemsProcess.js</possibleItemsProcess>
<consumer>ContractTypes</consumer>
</entityField>
<entityField>
<name>PAYMENT</name>
<title>Payment method</title>
<consumer>ContractPayments</consumer>
<mandatory v="true" />
<possibleItemsProcess>%aditoprj%/entity/Contract_entity/entityfields/payment/possibleItemsProcess.js</possibleItemsProcess>
</entityField>
<entityField>
<name>RELATION_ID</name>
......@@ -203,22 +203,47 @@
</children>
</entityConsumer>
<entityConsumer>
<name>ObjectRelation_dfo</name>
<title>Relations</title>
<name>ContractPayments</name>
<fieldType>DEPENDENCY_OUT</fieldType>
<dependency>
<name>dependency</name>
<entityName>ObjectRelation_entity</entityName>
<fieldName>ByAnyObject_dfi</fieldName>
<entityName>Keyword_entity</entityName>
<fieldName>SpecificContainerKeywords</fieldName>
</dependency>
<children>
<entityParameter>
<name>AnyObjectRowid_param</name>
<code>%aditoprj%/entity/Contract_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js</code>
<name>containerName_param</name>
<code>%aditoprj%/entity/Contract_entity/entityfields/contractpayments/children/containername_param/code.js</code>
</entityParameter>
</children>
</entityConsumer>
<entityConsumer>
<name>ContractStates</name>
<fieldType>DEPENDENCY_OUT</fieldType>
<dependency>
<name>dependency</name>
<entityName>Keyword_entity</entityName>
<fieldName>SpecificContainerKeywords</fieldName>
</dependency>
<children>
<entityParameter>
<name>containerName_param</name>
<code>%aditoprj%/entity/Contract_entity/entityfields/contractstates/children/containername_param/code.js</code>
</entityParameter>
</children>
</entityConsumer>
<entityConsumer>
<name>ContractTypes</name>
<fieldType>DEPENDENCY_OUT</fieldType>
<dependency>
<name>dependency</name>
<entityName>Keyword_entity</entityName>
<fieldName>SpecificContainerKeywords</fieldName>
</dependency>
<children>
<entityParameter>
<name>AnyObjectType_param</name>
<code>%aditoprj%/entity/Contract_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js</code>
<name>containerName_param</name>
<code>%aditoprj%/entity/Contract_entity/entityfields/contracttypes/children/containername_param/code.js</code>
</entityParameter>
</children>
</entityConsumer>
......@@ -321,6 +346,18 @@
<name>PERS_LASTNAME.value</name>
<recordfield>PERS.LASTNAME</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>PAYMENT.displayValue</name>
<expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/payment.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>CONTRACTSTATUS.displayValue</name>
<expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/contractstatus.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>CONTRACTTYPE.displayValue</name>
<expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/contracttype.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
</recordFieldMappings>
</dbRecordContainer>
</recordContainers>
......
import("system.result");
result.string("ContractPayment");
\ No newline at end of file
import("system.result");
result.string("ContractStatus");
\ No newline at end of file
import("system.result");
result.string("ContractType");
\ No newline at end of file
import("system.result");
import("Keyword_lib");
var sql = KeywordUtils.getResolvedTitleSqlPart("ContractStatus", "CONTRACT.CONTRACTSTATUS");
result.string(sql);
\ No newline at end of file
import("system.result");
import("Keyword_lib");
var items;
items = KeywordUtils.getStandardArray("CURRENCY");
result.object(items);
\ No newline at end of file
var sql = KeywordUtils.getResolvedTitleSqlPart("ContractType", "CONTRACT.CONTRACTTYPE");
result.string(sql);
\ No newline at end of file
import("system.result");
import("Keyword_lib");
var items;
items = KeywordUtils.getStandardArray("CONTRACT.PAYMENT");
result.object(items);
\ No newline at end of file
var sql = KeywordUtils.getResolvedTitleSqlPart("ContractPayment", "CONTRACT.PAYMENT");
result.string(sql);
\ No newline at end of file
......@@ -65,7 +65,7 @@
<documentation>%aditoprj%/entity/Keyword_entity/entityfields/containername_param/documentation.adoc</documentation>
</entityParameter>
<entityProvider>
<name>generic_dfi</name>
<name>SpecificContainerKeywords</name>
<fieldType>DEPENDENCY_IN</fieldType>
<lookupIdfield>KEYID</lookupIdfield>
<recordContainer>db</recordContainer>
......@@ -82,11 +82,47 @@
<fieldName>KeywordDirections</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>42219987-4eff-4429-a22c-93e8a9c55c45</name>
<entityName>Contract_entity</entityName>
<fieldName>ContractPayments</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>2712e2b3-f17f-4a9c-9752-2383f62eb2b8</name>
<entityName>Contract_entity</entityName>
<fieldName>ContractStates</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>bd68f269-457c-487d-a1b2-e045d98f74b7</name>
<entityName>Contract_entity</entityName>
<fieldName>ContractTypes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>b88b5cc8-c29e-4110-b86e-d1d0050460e5</name>
<entityName>Offer_entity</entityName>
<fieldName>KeywordCurrencies</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>57c746ee-a8c0-484a-8c73-6301609b76b1</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordCurrencies</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>bf014596-954b-4c7d-9304-8283c9bcc7ae</name>
<entityName>Productprice_entity</entityName>
<fieldName>KeywordCurrencies</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
<children>
<entityParameter>
<name>onlyActives</name>
<code>%aditoprj%/entity/Keyword_entity/entityfields/generic_dfi/children/onlyactives/code.js</code>
<code>%aditoprj%/entity/Keyword_entity/entityfields/specificcontainerkeywords/children/onlyactives/code.js</code>
<expose v="true" />
</entityParameter>
</children>
......
Keyword
=======
:toc:
Simply said: A keyword is a list of key-value pairs.
......@@ -20,7 +21,12 @@ Keyword Entry::
Keyword::
Keyword describes the whole set of elements like keyword container and keyword entry. It's more like a virtual bracket for the whole construct.
== Structure ==
== Types of Keywords ==
=== Simple Key-Value lists ===
==== The Structure ====
.abstract structure of keywords
["graphviz", subs="attributes+"]
......@@ -50,14 +56,14 @@ Take a look at the following table. Beware that these are not the acutal db-colu
.simplified, abstract representation how keywords are acutllay stored
[options="header", cols="m,m,d,d"]
|=======
|UID |key-ID |tile | category
|UID |key-ID |tile | container
|{set:cellbgcolor:#90b678}
unique key 1|1-key-value A|one|category 1
|unique key 2|2-key-value A|two|category 1
|unique key 3|3-key-value A|three|category 1
unique key 1|1-key-value A|one|container 1
|unique key 2|2-key-value A|two|container 1
|unique key 3|3-key-value A|three|container 1
|{set:cellbgcolor:#b69e78 }
unique key 4|1-key-value B|I|category 2
|unique key 5|2-key-value B|II|category 2
unique key 4|1-key-value B|I|container 2
|unique key 5|2-key-value B|II|container 2
|=======
And, to clarify an example:
......@@ -66,7 +72,7 @@ And, to clarify an example:
[options="header", cols="m,m,d,d"]
|=======
|{set:cellbgcolor:! }
UID |key-ID |tile | category
UID |key-ID |tile | container
|{set:cellbgcolor:#90b678}db1792cd|de-DE|German (Germany)|Language
|62df7f0ba|en-GB|English (United Kingdom)|Language
|126229d9|fr-FR|French (France)|Language
......@@ -74,4 +80,26 @@ And, to clarify an example:
|52ce5785|2b2091eb|inactive|ContactStatus
|=======
=== Extended Key-Value lists with special Attributes ===
Basically this is a extension of the <<Simple Key-Value lists>>.
Sometimes it's neccesary to have some more propierties within a keyword-entry.
Example:
You've got a Keyword-container for Types of Communication with basically the following values:
- mobile phone
- landline phone
- email-address
- web-address
If you want to add a general type of information like "PHONE", "MAIL", "WEB" you've to add a keyword-attribute to the keyword-entry where you can store that information.
=== Complex Keyword as own entity ===
Sometimes you've a special case where the keyword entity cannot provide all the functioality.
In that case you can always define you own entity and create your own database strucutre to represent all the information and provide all the functions you need.
As an example, this could be the `Country_Entity`
\ No newline at end of file
import("system.result");
result.string("true");//TODO: provider-code is not executed correct (did not receive the value from here)
\ No newline at end of file
......@@ -14,7 +14,7 @@
<entityField>
<name>CURRENCY</name>
<title>Currency</title>
<possibleItemsProcess>%aditoprj%/entity/Offer_entity/entityfields/currency/possibleItemsProcess.js</possibleItemsProcess>
<consumer>KeywordCurrencies</consumer>
</entityField>
<entityField>
<name>OFFERCODE</name>
......@@ -317,6 +317,21 @@
<element>MASK</element>
</onValueChangeTypes>
</entityField>
<entityConsumer>
<name>KeywordCurrencies</name>
<fieldType>DEPENDENCY_OUT</fieldType>
<dependency>
<name>dependency</name>
<entityName>Keyword_entity</entityName>
<fieldName>SpecificContainerKeywords</fieldName>
</dependency>
<children>
<entityParameter>
<name>containerName_param</name>
<code>%aditoprj%/entity/Offer_entity/entityfields/keywordcurrencies/children/containername_param/code.js</code>
</entityParameter>
</children>
</entityConsumer>
</entityFields>
<recordContainers>
<dbRecordContainer>
......@@ -425,6 +440,10 @@
<name>ADDRESS.value</name>
<recordfield>OFFER.ADDRESS</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>CURRENCY.displayValue</name>
<expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
</recordFieldMappings>
</dbRecordContainer>
</recordContainers>
......
import("system.result");
result.string("Currency");
\ No newline at end of file
import("system.result");
import("Keyword_lib");
var items;
items = KeywordUtils.getStandardArray("CURRENCY");
result.object(items);
\ No newline at end of file
var sql = KeywordUtils.getResolvedTitleSqlPart("Currency", "OFFER.CURRENCY");
result.string(sql);
\ No newline at end of file
......@@ -14,7 +14,7 @@
<entityField>
<name>CURRENCY</name>
<title>Currency</title>
<possibleItemsProcess>%aditoprj%/entity/Order_entity/entityfields/currency/possibleItemsProcess.js</possibleItemsProcess>
<consumer>KeywordCurrencies</consumer>
</entityField>
<entityField>
<name>SALESORDERCODE</name>
......@@ -278,6 +278,21 @@
<entityField>
<name>ADDRESS</name>
</entityField>
<entityConsumer>
<name>KeywordCurrencies</name>
<fieldType>DEPENDENCY_OUT</fieldType>
<dependency>
<name>dependency</name>
<entityName>Keyword_entity</entityName>
<fieldName>SpecificContainerKeywords</fieldName>
</dependency>
<children>
<entityParameter>
<name>containerName_param</name>
<code>%aditoprj%/entity/Order_entity/entityfields/keywordcurrencies/children/containername_param/code.js</code>
</entityParameter>
</children>
</entityConsumer>
</entityFields>
<recordContainers>
<dbRecordContainer>
......@@ -382,6 +397,10 @@
<name>ADDRESS.value</name>
<recordfield>SALESORDER.ADDRESS</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>CURRENCY.displayValue</name>
<expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
</recordFieldMappings>
</dbRecordContainer>
</recordContainers>
......
import("system.result");
result.string("Currency");
\ No newline at end of file
import("system.result");
import("Keyword_lib");
var items;
items = KeywordUtils.getStandardArray("CONTRACT.CONTRACTSTATUS");
result.object(items);
\ No newline at end of file
var sql = KeywordUtils.getResolvedTitleSqlPart("Currency", "SALESORDER.CURRENCY");
result.string(sql);
\ No newline at end of file
......@@ -434,7 +434,7 @@ Usually this is used for filtering COMM-entires by a specified contact or creati
<dependency>
<name>dependency</name>
<entityName>Keyword_entity</entityName>
<fieldName>generic_dfi</fieldName>
<fieldName>SpecificContainerKeywords</fieldName>
</dependency>
<children>
<entityParameter>
......
......@@ -16,8 +16,8 @@
<entityField>
<name>CURRENCY</name>
<title>Currency</title>
<consumer>KeywordCurrencies</consumer>
<mandatory v="true" />
<possibleItemsProcess>%aditoprj%/entity/Productprice_entity/entityfields/currency/possibleItemsProcess.js</possibleItemsProcess>
</entityField>
<entityField>
<name>FROMQUANTITY</name>
......@@ -145,6 +145,21 @@
</entityDependency>
</dependencies>
</entityProvider>
<entityConsumer>
<name>KeywordCurrencies</name>
<fieldType>DEPENDENCY_OUT</fieldType>
<dependency>
<name>dependency</name>
<entityName>Keyword_entity</entityName>
<fieldName>SpecificContainerKeywords</fieldName>
</dependency>
<children>
<entityParameter>
<name>containerName_param</name>
<code>%aditoprj%/entity/Productprice_entity/entityfields/keywordcurrencies/children/containername_param/code.js</code>
</entityParameter>
</children>
</entityConsumer>
</entityFields>
<recordContainers>
<dbRecordContainer>
......@@ -206,6 +221,10 @@
<name>VAT.value</name>
<recordfield>PRODUCTPRICE.VAT</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>CURRENCY.displayValue</name>
<expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
</recordFieldMappings>
</dbRecordContainer>
</recordContainers>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment