/********************************************************************************
 * Copyright (c) 2015-2020 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 ********************************************************************************/


import {Type} from 'class-transformer';

export class Attribute {
  name: string;
  value: string;
  unit: string;
  dataType: string;
}

export class Relation {
  name: string;
  type: string;
  entityType: string;
  contextType: string;
  ids: string[];
}

export class Node {
  name: string;
  id: string;
  type: string;
  sourceType: string;
  sourceName: string;
  @Type(() => Attribute)
  attributes: Attribute[];
  @Type(() => Relation)
  relations: Relation[];
  active: boolean;

  getClass() {
    switch (this.type) {
      case 'StructureLevel':
        return 'pool';
      case 'MeaResult':
        return 'measurement';
      case 'SubMatrix':
        return 'channelgroup';
      case 'MeaQuantity':
        return 'channel';
      default:
        return this.type.toLowerCase();
    }
  }
}


