1 package util
.command
.databases
;
3 import interfaces
.Constants
;
4 import interfaces
.DJInterface
;
5 import interfaces
.Track
;
6 import interfaces
.collection
.Collection
;
8 import java
.util
.ArrayList
;
9 import java
.util
.Collections
;
10 import java
.util
.HashSet
;
11 import java
.util
.List
;
15 import util
.command
.Command
;
16 import util
.queryparser
.ApplyFilter
;
17 import util
.queryparser
.Filter
;
18 import util
.queryparser
.QueryParser
;
21 public class Browse
implements Command
{
23 private Map
<String
,String
> args
;
24 private int container
;
25 private Constants code
;
26 private Constants field
;
28 public Browse(int container
, Constants code
, Constants field
) {
29 this.container
= container
;
34 public void init(Map
<String
, String
> args
) {
37 System
.out
.println(args
);
40 public Response
run(DJInterface dj
) {
42 Iterable
<?
extends Track
> songs
= null;
44 for (Collection
<?
extends Track
> p
: dj
.library().collections()) {
45 if (p
.id() == container
) {
46 songs
= p
.source().tracks();
52 songs
= dj
.library().tracks();
55 System
.out
.println("collection has " + dj
.library().size() + " elements");
57 if (args
!= null && args
.containsKey("filter")) {
58 Filter f
= QueryParser
.parse(args
.get("filter"));
59 System
.out
.println(f
);
60 songs
= ApplyFilter
.filter(f
, songs
);
63 Set
<String
> results
= new HashSet
<String
>();
65 for (Track t
: songs
) {
66 String name
= (String
)t
.get(field
);
67 if (name
!= null) results
.add(name
);
70 System
.out
.println("partial result has " + results
.size() + " unique");
72 List
<String
> list
= new ArrayList
<String
>();
75 Collections
.sort(list
);
77 System
.out
.println("returning " + list
.size() + " elements from " + dj
.library().size());
79 return new util
.response
.databases
.Browse(code
, list
);