Refine access control, peer access
[federation.git] / gateway / src / main / java / org / acumos / federation / gateway / service / CatalogService.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
21 /**
22  * 
23  */
24 package org.acumos.federation.gateway.service;
25
26 import java.io.File;
27 import java.util.List;
28
29 import org.springframework.core.io.InputStreamResource;
30
31 import org.acumos.cds.domain.MLPArtifact;
32 import org.acumos.cds.domain.MLPSolution;
33 import org.acumos.cds.domain.MLPSolutionRevision;
34 import org.acumos.cds.transport.RestPageResponse;
35
36
37 /**
38  * Handles access to the solutions catalog 
39  */
40 public interface CatalogService {
41         
42         
43         /**
44          * 
45          *  API to be invoked by Peer Acumos to fetch the Catalog Solutions Information.
46          *  Pageable Response allowing Peer Acumos's to Specify the Page Numb\er and the maximum results of the Solutions list.
47          * 
48          * @param pageNumber : Page Number for the a specific set of the Solution List
49          * 
50          * @param maxSize : Maximum Number of objects returned in the response
51          * 
52          * @param sortingOrder : Sorting Order Type for the Response
53          * 
54          * @param mlpModelTypes : List of the ML Model Types for which Catalog Solutions needs to be returned
55          * 
56          * @return Pageable List of the Catalog Solutions
57          */
58         /*
59         RestPageResponse<MLPSolution>  getPeerCatalogSolutions(Integer pageNumber, Integer maxSize, String sortingOrder, 
60                         List<String> mlpModelTypes);
61         */
62
63         /**
64          * 
65          *  API to be invoked by Peer Acumos to fetch the Catalog Solutions List.
66          * 
67          * @param mlpModelTypes : Comma Separate value of the ML Model Types for which Catalog Solutions needs to be returned
68          * 
69          * @return List of the Catalog Solutions for the specified list of query parameters
70          */
71         List<MLPSolution> getSolutions(String mlpModelTypes, ServiceContext theContext);
72         
73
74         /**
75          */
76         MLPSolution getSolution(String theSolutionId, ServiceContext theContext);
77         
78         
79         /**
80          * @param solutionId : SolutionId for which Solution Revision Needs to be returned
81          * 
82          * @return List of the Solution Revision for the specified solution Id
83          */
84         List<MLPSolutionRevision> getSolutionRevisions(String theSolutionId, ServiceContext theContext);
85         
86         /**
87          */
88         MLPSolutionRevision getSolutionRevision(String theSolutionId, String theRevisionId, ServiceContext theContext);
89
90         /**
91          * @param solutionId : SolutionId for which Solution Revision Artifacts Needs to be returned
92          * 
93          * @param revisionid : RevisionId of the Solution for which List of Artifacts are needed.
94          * 
95          * @return List of the Solution Artifacts for the specified solution Id & revisionId
96          */
97         List<MLPArtifact> getSolutionRevisionArtifacts(String theSolutionId, String theRevisionId, ServiceContext theContext);
98         
99         
100         
101         /**
102          * @param artifactId of the File stored in Nexus repository
103          * @return Artifact File for the Machine Learning Solution 
104          */
105         InputStreamResource getSolutionRevisionArtifactContent(String theArtifactId, ServiceContext theContext);
106         
107 }