Add catalogId field to catalog search selector
[federation.git] / gateway / src / main / java / org / acumos / federation / gateway / cds / Solution.java
1 /*-
2  * ===============LICENSE_START=======================================================
3  * Acumos
4  * ===================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property & Tech Mahindra. All rights reserved.
6  * ===================================================================================
7  * This Acumos software file is distributed by AT&T and Tech Mahindra
8  * under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *  
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *  
14  * This file is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ===============LICENSE_END=========================================================
19  */
20 package org.acumos.federation.gateway.cds;
21
22 import java.util.List;
23
24 import org.acumos.cds.domain.MLPSolution;
25 import org.acumos.cds.domain.MLPSolutionRevision;
26
27 /**
28  * Supplements the CDS representation of a solution with related information: revisions.
29  * Allows federation to pack information passed between peers.
30  */
31 public class Solution extends MLPSolution {
32
33         /**
34          * For the purpose of defining constants for search criteria.
35          * This exposes CDS maintained information so it has to be kept in sync.
36          * We only define those of interest for searching.
37          */
38         public static interface Fields {
39                 public static final String solutionId = "solutionId";
40                 public static final String name = "name";
41                 public static final String description = "description";
42                 public static final String tags = "tags";
43                 public static final String active = "active";
44                 public static final String modelTypeCode = "modelTypeCode";
45                 public static final String toolkitTypeCode = "toolkitTypeCode";
46                 public static final String accessTypeCode = "accessTypeCode";
47                 public static final String validationStatusCode = "validationStatusCode";
48                 public static final String modified = "modified";
49                 public static final String sourceId = "sourceId";
50                 public static final String catalogId = "catalogId";
51         };
52
53         private List<? extends MLPSolutionRevision>             revisions;
54
55         public Solution() {
56         }
57
58         public Solution(MLPSolution theCDSSolution) {
59                 super(theCDSSolution);
60         }
61
62         public void setRevisions(List<? extends MLPSolutionRevision> theRevisions) {
63                 this.revisions = theRevisions;
64         }
65
66         public List<? extends MLPSolutionRevision>      getRevisions() {
67                 return this.revisions;
68         }
69         
70         public static SolutionBuilder build() {
71                 return new SolutionBuilder(new Solution());
72         }
73
74         public static SolutionBuilder buildFrom(MLPSolution theSolution) {
75                 return new SolutionBuilder(new Solution(theSolution));
76         }
77
78         @Override
79         public String toString() {
80                 return super.toString() + (this.revisions == null ? "[]" : this.revisions.toString()) ;
81         }
82 }
83
84