1
+ // Copyright (C) 2018 The Delphi Team.
2
+ // See the LICENCE file distributed with this work for additional
3
+ // information regarding copyright ownership.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ package de .upb .cs .swt .delphi .client
18
+
19
+ import spray .json .DefaultJsonProtocol
20
+
21
+ trait Result {
22
+ val id : String
23
+ val metadata : ArtifactMetadata
24
+ val metricResults : Map [String , Int ]
25
+
26
+ def toMavenIdentifier () : String = s " ${metadata.groupId}: ${metadata.artifactId}: ${metadata.version}"
27
+
28
+ def fieldNames () : List [String ] = metricResults.keys.toList.sorted
29
+ }
30
+
31
+ case class SearchResult (id : String ,
32
+ metadata : ArtifactMetadata ,
33
+ metricResults : Map [String , Int ]) extends Result
34
+
35
+ case class RetrieveResult (id : String ,
36
+ metadata : ArtifactMetadata ,
37
+ metricResults : Map [String , Int ]) extends Result
38
+
39
+ case class ArtifactMetadata (val artifactId : String ,
40
+ val source : String ,
41
+ val groupId : String ,
42
+ val version : String ,
43
+ val discovered : String )
44
+
45
+ object SearchResultJson extends DefaultJsonProtocol {
46
+ implicit val artifactFormat = jsonFormat5(ArtifactMetadata )
47
+ implicit val searchResultFormat = jsonFormat3(SearchResult )
48
+ implicit val retrieveResultFormat = jsonFormat3(RetrieveResult )
49
+ }
0 commit comments