Component preset updates
[debian/openrocket] / core / src / net / sf / openrocket / database / ComponentPresetDatabase.java
1 package net.sf.openrocket.database;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 import net.sf.openrocket.preset.ComponentPreset;
8 import net.sf.openrocket.startup.Application;
9
10 public class ComponentPresetDatabase extends Database<ComponentPreset> implements ComponentPresetDao {
11
12         public ComponentPresetDatabase() {
13                 super();
14         }
15
16         @Override
17         public List<ComponentPreset> listAll() {
18                 return list;
19         }
20
21         @Override
22         public void insert( ComponentPreset preset ) {
23                 list.add(preset);
24         }
25
26         @Override
27         public List<ComponentPreset> listForType( ComponentPreset.Type type ) {
28                 if ( type == null ) {
29                         return Collections.<ComponentPreset>emptyList();
30                 }
31
32                 List<ComponentPreset> result = new ArrayList<ComponentPreset>(list.size()/6);
33
34                 for( ComponentPreset preset : list ) {
35                         if ( preset.get(ComponentPreset.TYPE).equals(type) ) {
36                                 result.add(preset);
37                         }
38                 }
39                 return result;
40
41         }
42
43         /**
44          * Return a list of component presets based on the type.
45          * All components returned will be of Type type.
46          * 
47          * @param type  
48          * @param favorite if true, only return the favorites.  otherwise return all matching.
49          * @return
50          */
51         @Override
52         public List<ComponentPreset> listForType( ComponentPreset.Type type, boolean favorite ) {
53
54                 if ( !favorite ) {
55                         return listForType(type);
56                 }
57
58                 List<ComponentPreset> result = new ArrayList<ComponentPreset>(list.size()/6);
59
60                 for( ComponentPreset preset : list ) {
61                         if ( preset.isFavorite() && preset.get(ComponentPreset.TYPE).equals(type) ) {
62                                 result.add(preset);
63                         }
64                 }
65                 return result;
66         }
67
68         @Override
69         public List<ComponentPreset> listForTypes( ComponentPreset.Type ... type ) {
70
71                 if( type == null || type.length == 0 ) {
72                         return Collections.<ComponentPreset>emptyList();
73                 }
74
75                 if (type.length == 1 ) {
76                         return listForType(type[0]);
77                 }
78
79                 List<ComponentPreset> result = new ArrayList<ComponentPreset>(list.size()/6);
80
81                 for( ComponentPreset preset : list ) {
82                         ComponentPreset.Type presetType = preset.get(ComponentPreset.TYPE);
83                         typeLoop: for( int i=0; i<type.length; i++ ) {
84                                 if ( presetType.equals(type[i]) ) {
85                                         result.add(preset);
86                                         break typeLoop; // from inner loop.
87                                 }
88                         }
89
90                 }
91                 return result;
92         }
93
94         @Override
95         public List<ComponentPreset> listForTypes( List<ComponentPreset.Type> types ) {
96                 return listForTypes( (ComponentPreset.Type[]) types.toArray() );
97         }
98
99         @Override
100         public List<ComponentPreset> find(String manufacturer, String partNo) {
101                 List<ComponentPreset> presets = new ArrayList<ComponentPreset>();
102                 for( ComponentPreset preset : list ) {
103                         if ( preset.getManufacturer().getSimpleName().equals(manufacturer) && preset.getPartNo().equals(partNo) ) {
104                                 presets.add(preset);
105                         }
106                 }
107                 return presets;
108         }
109
110         @Override
111         public void setFavorite( ComponentPreset preset, boolean favorite ) {
112                 preset.setFavorite(favorite);
113                 Application.getPreferences().setComponentFavorite( preset, favorite );
114                 this.fireAddEvent(preset);
115         }
116
117 }