Adding ISModel Definition
This commit is contained in:
parent
6b6de30af8
commit
f18fe6b9de
|
@ -0,0 +1,8 @@
|
||||||
|
import { ISManageable } from './ISManageable';
|
||||||
|
import { Header } from './properties/Header';
|
||||||
|
|
||||||
|
export interface ER extends ISManageable {
|
||||||
|
|
||||||
|
header: Header;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
export interface ISManageable {
|
||||||
|
'@class': string;
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
import { Entity } from './Entity';
|
||||||
|
import { IsParentOf } from '../relations/IsParentOf';
|
||||||
|
|
||||||
|
export interface Context extends Entity {
|
||||||
|
|
||||||
|
name: string;
|
||||||
|
parent: IsParentOf<Context, Context>;
|
||||||
|
children: Array<IsParentOf<Context, Context>>;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { ER } from '../ER';
|
||||||
|
|
||||||
|
// tslint:disable-next-line: no-empty-interface
|
||||||
|
export interface Entity extends ER {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { Entity } from './Entity';
|
||||||
|
|
||||||
|
// tslint:disable-next-line: no-empty-interface
|
||||||
|
export interface Facet extends Entity {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { Entity } from './Entity';
|
||||||
|
import { ConsistsOf } from '../relations/ConsistsOf';
|
||||||
|
import { IsRelatedTo } from '../relations/IsRelatedTo';
|
||||||
|
import { Facet } from './Facet';
|
||||||
|
|
||||||
|
export interface Resource extends Entity {
|
||||||
|
|
||||||
|
consistsOf: Array<ConsistsOf<Resource, Facet>>;
|
||||||
|
isRelatedTo: Array<IsRelatedTo<Resource, Resource>>;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { Property } from './Property';
|
||||||
|
|
||||||
|
export interface Encrypted extends Property {
|
||||||
|
value: string;
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { Property } from './Property';
|
||||||
|
|
||||||
|
export interface Header extends Property {
|
||||||
|
'uuid': string;
|
||||||
|
'creator': string;
|
||||||
|
'modifiedBy': string;
|
||||||
|
'creationTime': string;
|
||||||
|
'lastUpdateTime': string;
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
import { Property } from './Property';
|
||||||
|
|
||||||
|
export enum RemoveConstraint {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When the source Entity is removed also the target
|
||||||
|
* Entity is removed but if and only if the latter has no other
|
||||||
|
* incoming Relation.
|
||||||
|
*/
|
||||||
|
cascadeWhenOrphan,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When the source Entity is removed also the target
|
||||||
|
* Entity is removed.
|
||||||
|
*/
|
||||||
|
cascade,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When the source Entity is removed the target Entity
|
||||||
|
* is keep.
|
||||||
|
*/
|
||||||
|
keep
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum AddConstraint {
|
||||||
|
|
||||||
|
propagate,
|
||||||
|
|
||||||
|
unpropagate
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PropagationConstraint extends Property {
|
||||||
|
|
||||||
|
remove: RemoveConstraint;
|
||||||
|
add: AddConstraint;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { ISManageable } from '../ISManageable';
|
||||||
|
|
||||||
|
// tslint:disable-next-line: no-empty-interface
|
||||||
|
export interface Property extends ISManageable {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
import { Resource } from '../entities/Resource';
|
||||||
|
import { Relation } from './Relation';
|
||||||
|
import { Facet } from '../entities/Facet';
|
||||||
|
|
||||||
|
export interface ConsistsOf<Out extends Resource, In extends Facet> extends Relation<Out, In> {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
import { Resource } from '../entities/Resource';
|
||||||
|
import { ConsistsOf } from './ConsistsOf';
|
||||||
|
import { Facet } from '../entities/Facet';
|
||||||
|
|
||||||
|
export interface IsIdentifiedBy<Out extends Resource, In extends Facet> extends ConsistsOf<Out, In> {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
import { Context } from '../entities/Context';
|
||||||
|
import { Relation } from './Relation';
|
||||||
|
|
||||||
|
export interface IsParentOf<Out extends Context, In extends Context>
|
||||||
|
extends Relation<Out, In> {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { Resource } from '../entities/Resource';
|
||||||
|
import { Relation } from './Relation';
|
||||||
|
|
||||||
|
export interface IsRelatedTo<Out extends Resource, In extends Resource> extends Relation<Out, In> {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { Entity } from '../entities/Entity';
|
||||||
|
import { ER } from '../ER';
|
||||||
|
|
||||||
|
export interface Relation<Out extends Entity, In extends Entity> extends ER {
|
||||||
|
|
||||||
|
source: Out;
|
||||||
|
target: In;
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
export interface ISType {
|
export interface TypeDefinition {
|
||||||
name: string;
|
name: string;
|
||||||
description: string | null;
|
description: string | null;
|
||||||
abstract: boolean;
|
abstract: boolean;
|
|
@ -1,7 +1,7 @@
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { IsService } from '../is.service';
|
import { IsService } from '../is.service';
|
||||||
import { Type } from '../type';
|
import { Type } from '../type';
|
||||||
import { ISType } from '../ISType';
|
import { TypeDefinition } from '../is-model/types/TypeDefinition';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-resource-types-tree',
|
selector: 'app-resource-types-tree',
|
||||||
|
@ -20,7 +20,7 @@ export class ResourceTypesTreeComponent implements OnInit {
|
||||||
this.isService.getResourceTypes(isTypes => { this.resources = this.analyseTypes(isTypes); });
|
this.isService.getResourceTypes(isTypes => { this.resources = this.analyseTypes(isTypes); });
|
||||||
}
|
}
|
||||||
|
|
||||||
analyseUnassociated(type: Type, map: Map<string, Type>, unassociated: Map<string, ISType>) {
|
analyseUnassociated(type: Type, map: Map<string, Type>, unassociated: Map<string, TypeDefinition>) {
|
||||||
const associated: string[] = new Array();
|
const associated: string[] = new Array();
|
||||||
|
|
||||||
for (const name of unassociated.keys()) {
|
for (const name of unassociated.keys()) {
|
||||||
|
@ -38,7 +38,7 @@ export class ResourceTypesTreeComponent implements OnInit {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
analyseType(isType: ISType, map: Map<string, Type>, unassociated: Map<string, ISType>) {
|
analyseType(isType: TypeDefinition, map: Map<string, Type>, unassociated: Map<string, TypeDefinition>) {
|
||||||
|
|
||||||
const type: Type = new Type(isType);
|
const type: Type = new Type(isType);
|
||||||
|
|
||||||
|
@ -55,10 +55,10 @@ export class ResourceTypesTreeComponent implements OnInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
analyseTypes(isTypes: ISType[]): Type[] {
|
analyseTypes(isTypes: TypeDefinition[]): Type[] {
|
||||||
|
|
||||||
const map = new Map<string, Type>();
|
const map = new Map<string, Type>();
|
||||||
const unassociated = new Map<string, ISType>();
|
const unassociated = new Map<string, TypeDefinition>();
|
||||||
|
|
||||||
for (const isType of isTypes) {
|
for (const isType of isTypes) {
|
||||||
this.analyseType(isType, map, unassociated);
|
this.analyseType(isType, map, unassociated);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { ISType } from './ISType';
|
import { TypeDefinition } from './ISType';
|
||||||
|
|
||||||
export class Type {
|
export class Type {
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ export class Type {
|
||||||
parent: Type;
|
parent: Type;
|
||||||
children: Type[];
|
children: Type[];
|
||||||
|
|
||||||
constructor(isType: ISType) {
|
constructor(isType: TypeDefinition) {
|
||||||
this.name = isType.name;
|
this.name = isType.name;
|
||||||
this.description = isType.description;
|
this.description = isType.description;
|
||||||
this.abstract = isType.abstract;
|
this.abstract = isType.abstract;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { ISType } from './ISType';
|
import { TypeDefinition } from './ISType';
|
||||||
|
|
||||||
export const types: ISType[] = [
|
export const types: TypeDefinition[] = [
|
||||||
{
|
{
|
||||||
"name": "Resource",
|
"name": "Resource",
|
||||||
"description": null,
|
"description": null,
|
||||||
|
|
Loading…
Reference in New Issue