bebe4304269d14027b45170e7e254930102eb3c1
[federation.git] / gateway / src / main / java / org / acumos / federation / gateway / service / FederationService.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  * Handles the business behind the Acumos federation interface
38  */
39 public interface FederationService {
40         
41         
42         /**
43          * 
44          *  API to be invoked by Peer Acumos to fetch the Catalog Solutions Information.
45          *  Pageable Response allowing Peer Acumos's to Specify the Page Numb\er and the maximum results of the Solutions list.
46          * 
47          * @param pageNumber : Page Number for the a specific set of the Solution List
48          * 
49          * @param maxSize : Maximum Number of objects returned in the response
50          * 
51          * @param sortingOrder : Sorting Order Type for the Response
52          * 
53          * @param mlpModelTypes : List of the ML Model Types for which Catalog Solutions needs to be returned
54          * 
55          * @return Pageable List of the Catalog Solutions
56          */
57         RestPageResponse<MLPSolution>  getPeerCatalogSolutions(Integer pageNumber, Integer maxSize, String sortingOrder, 
58                         List<String> mlpModelTypes);
59         
60         /**
61          * 
62          *  API to be invoked by Peer Acumos to fetch the Catalog Solutions List.
63          * 
64          * @param mlpModelTypes : Comma Separate value of the ML Model Types for which Catalog Solutions needs to be returned
65          * 
66          * @return List of the Catalog Solutions for the specified list of query parameters
67          */
68         List<MLPSolution> getPeerCatalogSolutionsList(String mlpModelTypes);
69         
70         
71         /**
72          * @param solutionId : SolutionId for which Solution Revision Needs to be returned
73          * 
74          * @return List of the Solution Revision for the specified solution Id
75          */
76         List<MLPSolutionRevision> getPeerCatalogSolutionRevision(String solutionId);
77         
78         /**
79          * @param solutionId : SolutionId for which Solution Revision Artifacts Needs to be returned
80          * 
81          * @param revisionid : RevisionId of the Solution for which List of Artifacts are needed.
82          * 
83          * @return List of the Solution Artifacts for the specified solution Id & revisionId
84          */
85         List<MLPArtifact> getPeerSolutionArtifacts(String solutionId, String revisionId);
86         
87         
88         
89         /**
90          * @param artifactId of the File stored in Nexus repository
91          * @return Artifact File for the Machine Learning Solution 
92          */
93         InputStreamResource getPeerSolutionArtifactFile(String artifactId);
94         
95 }