Skip to content

Commit a346089

Browse files
author
Daman Arora
committed
remove hardcoded data and use dao
1 parent caf579d commit a346089

1 file changed

Lines changed: 47 additions & 79 deletions

File tree

plugins/hackerbook/feature/src/main/java/org/apache/cloudstack/feature/CoffeeManagerImpl.java

Lines changed: 47 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import com.cloud.utils.component.ManagerBase;
2323
import com.cloud.utils.component.PluggableService;
24+
import com.cloud.utils.exception.CloudRuntimeException;
2425
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
2526
import org.apache.cloudstack.poll.BackgroundPollManager;
2627
import org.apache.cloudstack.poll.BackgroundPollTask;
@@ -30,6 +31,7 @@
3031
import org.apache.cloudstack.api.command.ListCoffeeCmd;
3132
import org.apache.cloudstack.api.command.RemoveCoffeeCmd;
3233
import org.apache.cloudstack.api.command.UpdateCoffeeCmd;
34+
import org.apache.cloudstack.feature.dao.CoffeeDao;
3335
import org.apache.cloudstack.framework.config.Configurable;
3436
import org.apache.cloudstack.framework.config.ConfigKey;
3537
import org.apache.logging.log4j.Logger;
@@ -45,6 +47,9 @@ public class CoffeeManagerImpl extends ManagerBase implements CoffeeManager, Con
4547

4648
private static final Logger s_logger = LogManager.getLogger(CoffeeManagerImpl.class);
4749

50+
@Inject
51+
private CoffeeDao coffeeDao;
52+
4853
@Inject
4954
private BackgroundPollManager backgroundPollManager;
5055

@@ -68,48 +73,8 @@ public class CoffeeManagerImpl extends ManagerBase implements CoffeeManager, Con
6873
ConfigKey.Scope.Zone
6974
);
7075

71-
private static class HardcodedCoffee implements Coffee {
72-
private final long id;
73-
private final String uuid;
74-
private final String name;
75-
private final Offering offering;
76-
private Size size;
77-
private State state;
78-
79-
public HardcodedCoffee(long id, String uuid, String name, Offering offering, Size size, State state) {
80-
this.id = id;
81-
this.uuid = uuid;
82-
this.name = name;
83-
this.offering = offering;
84-
this.size = size;
85-
this.state = state;
86-
}
87-
88-
@Override
89-
public long getId() { return id; }
90-
91-
@Override
92-
public String getUuid() { return uuid; }
93-
94-
@Override
95-
public String getName() { return name; }
96-
97-
@Override
98-
public Offering getOffering() { return offering; }
99-
100-
@Override
101-
public Size getSize() { return size; }
102-
103-
public void setSize(Size size) { this.size = size; }
104-
105-
@Override
106-
public State getState() { return state; }
107-
108-
public void setState(State state) { this.state = state; }
109-
}
110-
11176
private static final class CoffeeGCTask extends ManagedContextRunnable implements BackgroundPollTask {
112-
private CoffeeManager coffeeManager;
77+
private final CoffeeManager coffeeManager;
11378

11479
private CoffeeGCTask(CoffeeManager coffeeManager) {
11580
this.coffeeManager = coffeeManager;
@@ -184,48 +149,34 @@ public ConfigKey<?>[] getConfigKeys() {
184149
@Override
185150
public Coffee createCoffee(CreateCoffeeCmd cmd) {
186151
s_logger.info("Creating coffee: " + cmd.getName());
187-
Coffee coffee = new HardcodedCoffee(
188-
3L,
189-
"fake-uuid-3",
190-
cmd.getName(),
191-
Coffee.Offering.valueOf(cmd.getOffering()),
192-
Coffee.Size.valueOf(cmd.getSize()),
193-
Coffee.State.Created
194-
);
195-
196-
s_logger.debug("Created coffee with ID: " + coffee.getId());
152+
153+
Coffee.Offering offering = Coffee.Offering.valueOf(cmd.getOffering());
154+
Coffee.Size size = Coffee.Size.valueOf(cmd.getSize());
155+
156+
CoffeeVO coffee = new CoffeeVO(cmd.getName(), offering, size, 1L);
157+
coffee = coffeeDao.persist(coffee);
158+
159+
s_logger.debug("Created coffee with ID: " + coffee.getId() + ", UUID: " + coffee.getUuid());
197160
return coffee;
198161
}
199162

200163
@Override
201164
public List<Coffee> listCoffees(ListCoffeeCmd cmd) {
202165
s_logger.info("Listing coffees");
203-
List<Coffee> coffees = new ArrayList<>();
204-
205-
coffees.add(new HardcodedCoffee(1L, "uuid-1", "Espresso",
206-
Coffee.Offering.Espresso, Coffee.Size.SMALL, Coffee.State.Brewed));
207-
208-
coffees.add(new HardcodedCoffee(2L, "uuid-2", "Latte",
209-
Coffee.Offering.Latte, Coffee.Size.LARGE, Coffee.State.Created));
210166

211-
coffees.add(new HardcodedCoffee(3L, "uuid-3", "Cappuccino",
212-
Coffee.Offering.Cappuccino, Coffee.Size.MEDIUM, Coffee.State.Brewing));
167+
List<CoffeeVO> coffees = coffeeDao.listAll();
213168

214169
String id = cmd.getId();
215-
String offering = cmd.getOffering();
216-
String size = cmd.getSize();
217170

218171
List<Coffee> filtered = new ArrayList<>();
219-
for (Coffee coffee : coffees) {
172+
for (CoffeeVO coffee : coffees) {
173+
if (coffee.getRemoved() != null) {
174+
continue;
175+
}
176+
220177
boolean match = true;
221178

222-
if (id != null && !String.valueOf(coffee.getId()).equals(id)) {
223-
match = false;
224-
}
225-
if (offering != null && !coffee.getOffering().name().equalsIgnoreCase(offering)) {
226-
match = false;
227-
}
228-
if (size != null && !coffee.getSize().name().equalsIgnoreCase(size)) {
179+
if (id != null && coffee.getId() != Long.parseLong(id)) {
229180
match = false;
230181
}
231182

@@ -242,14 +193,18 @@ public List<Coffee> listCoffees(ListCoffeeCmd cmd) {
242193
public Coffee updateCoffee(UpdateCoffeeCmd cmd) {
243194
s_logger.info("Updating coffee with ID: " + cmd.getId());
244195

245-
HardcodedCoffee coffee = new HardcodedCoffee(
246-
Long.parseLong(cmd.getId()),
247-
"uuid-" + cmd.getId(),
248-
"Updated Coffee Order",
249-
Coffee.Offering.Espresso,
250-
cmd.getSize() != null ? Coffee.Size.valueOf(cmd.getSize()) : Coffee.Size.MEDIUM,
251-
Coffee.State.Created
252-
);
196+
long id = Long.parseLong(cmd.getId());
197+
CoffeeVO coffee = coffeeDao.findById(id);
198+
199+
if (coffee == null) {
200+
throw new CloudRuntimeException("Coffee with ID " + id + " not found");
201+
}
202+
203+
if (cmd.getSize() != null) {
204+
s_logger.debug("Size update requested but not yet supported in minimal schema");
205+
}
206+
207+
coffeeDao.update(id, coffee);
253208

254209
s_logger.debug("Updated coffee: " + coffee.getName());
255210
return coffee;
@@ -259,10 +214,23 @@ public Coffee updateCoffee(UpdateCoffeeCmd cmd) {
259214
public boolean removeCoffee(RemoveCoffeeCmd cmd) {
260215
if (cmd.getId() != null) {
261216
s_logger.info("Removing coffee with ID: " + cmd.getId());
217+
long id = Long.parseLong(cmd.getId());
218+
219+
boolean result = coffeeDao.remove(id);
220+
221+
if (!result) {
222+
throw new CloudRuntimeException("Failed to remove coffee with ID " + id);
223+
}
224+
225+
return true;
262226
} else if (cmd.getIds() != null) {
263227
s_logger.info("Removing " + cmd.getIds().size() + " coffees");
228+
for (String id : cmd.getIds()) {
229+
coffeeDao.remove(Long.parseLong(id));
230+
}
231+
return true;
264232
}
265233

266-
return true;
234+
return false;
267235
}
268236
}

0 commit comments

Comments
 (0)