diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..97f7210 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..59c2d98 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + SSDStorePULL + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..ec1937b --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/src/Capacity.java b/src/Capacity.java new file mode 100644 index 0000000..bcd342c --- /dev/null +++ b/src/Capacity.java @@ -0,0 +1,11 @@ +import java.util.*; + +public class Capacity { + private int value; + public int getValue() { + return this.value; + } + public void setCapacity(int cur_capacity) { + this.value = cur_capacity; + } +} \ No newline at end of file diff --git a/src/ItemsByCapacity.java b/src/ItemsByCapacity.java new file mode 100644 index 0000000..faf7f85 --- /dev/null +++ b/src/ItemsByCapacity.java @@ -0,0 +1,21 @@ +import java.util.*; + +public class ItemsByCapacity { + private Capacity capacity; + private SiteA siteA; + public ItemsByCapacity(Capacity capacity, SiteA siteA) { + this.capacity = capacity; + this.siteA = siteA; + } + public List> getValue() { + List> temp_l1 = new ArrayList<>(); + { + for (Map item: this.siteA.getValue()) { + if ((Integer) item.get("capacity") >= this.capacity.getValue()) { + temp_l1.add(item); + } + } + } + return temp_l1; + } +} \ No newline at end of file diff --git a/src/ItemsByPrice.java b/src/ItemsByPrice.java new file mode 100644 index 0000000..cf04438 --- /dev/null +++ b/src/ItemsByPrice.java @@ -0,0 +1,21 @@ +import java.util.*; + +public class ItemsByPrice { + private Price price; + private SiteA siteA; + public ItemsByPrice(Price price, SiteA siteA) { + this.price = price; + this.siteA = siteA; + } + public List> getValue() { + List> temp_l1 = new ArrayList<>(); + { + for (Map item: this.siteA.getValue()) { + if ((Integer) item.get("price") <= this.price.getValue()) { + temp_l1.add(item); + } + } + } + return temp_l1; + } +} \ No newline at end of file diff --git a/src/Price.java b/src/Price.java new file mode 100644 index 0000000..7b322f1 --- /dev/null +++ b/src/Price.java @@ -0,0 +1,11 @@ +import java.util.*; + +public class Price { + private int value; + public int getValue() { + return this.value; + } + public void setPrice(int cur_price) { + this.value = cur_price; + } +} \ No newline at end of file diff --git a/src/SSDStore.java b/src/SSDStore.java new file mode 100644 index 0000000..692304d --- /dev/null +++ b/src/SSDStore.java @@ -0,0 +1,40 @@ +import java.util.*; + +public class SSDStore { + private Capacity capacity; + private SiteA siteA; + private ItemsByCapacity itemsByCapacity; + private Price price; + private ItemsByPrice itemsByPrice; + public SSDStore() { + this.capacity = new Capacity(); + this.siteA = new SiteA(); + this.itemsByCapacity = new ItemsByCapacity(capacity, siteA); + this.price = new Price(); + this.itemsByPrice = new ItemsByPrice(price, siteA); + } + public int getCapacity() { + return capacity.getValue(); + } + public void setCapacity(int cur_capacity) { + this.capacity.setCapacity(cur_capacity); + } + public List> getSiteA() { + return siteA.getValue(); + } + public void addProductToSiteA(int capacity, int price) { + this.siteA.addProductToSiteA(capacity, price); + } + public List> getItemsByCapacity() { + return itemsByCapacity.getValue(); + } + public int getPrice() { + return price.getValue(); + } + public void setPrice(int cur_price) { + this.price.setPrice(cur_price); + } + public List> getItemsByPrice() { + return itemsByPrice.getValue(); + } +} \ No newline at end of file diff --git a/src/SiteA.java b/src/SiteA.java new file mode 100644 index 0000000..60d7574 --- /dev/null +++ b/src/SiteA.java @@ -0,0 +1,14 @@ +import java.util.*; + +public class SiteA { + private List> value = new ArrayList<>(); + public List> getValue() { + return new ArrayList<>(this.value); + } + public void addProductToSiteA(int capacity, int price) { + Map temp_nil = new HashMap(); + temp_nil.put("price",price); + temp_nil.put("capacity",capacity); + this.value.add(0, temp_nil); + } +} \ No newline at end of file diff --git a/src/TestSSDStoreUpdate.java b/src/TestSSDStoreUpdate.java new file mode 100644 index 0000000..00a09ec --- /dev/null +++ b/src/TestSSDStoreUpdate.java @@ -0,0 +1,73 @@ + + +import static org.junit.Assert.*; + +import java.util.List; +import java.util.Map; + +import org.junit.Test; + +public class TestSSDStoreUpdate { + + @Test + public void test() { + SSDStore store = new SSDStore(); + store.addProductToSiteA(500, 7000); + store.addProductToSiteA(1500, 12000); + + store.setPrice(7000); + List> itemsByPrice = store.getItemsByPrice(); + assertEquals(itemsByPrice.size(), 1); + for (Map item: itemsByPrice) { + assertTrue((Integer) item.get("price") <= 7000); + } + store.setPrice(12000); + itemsByPrice = store.getItemsByPrice(); + assertEquals(itemsByPrice.size(), 2); + for (Map item: itemsByPrice) { + assertTrue((Integer) item.get("price") <= 12000); + } + + store.setCapacity(500); + List> itemsByCapacity = store.getItemsByCapacity(); + assertEquals(itemsByCapacity.size(), 2); + for (Map item: itemsByCapacity) { + assertTrue((Integer) item.get("capacity") >= 500); + } + store.setCapacity(1500); + itemsByCapacity = store.getItemsByCapacity(); + assertEquals(itemsByCapacity.size(), 1); + for (Map item: itemsByCapacity) { + assertTrue((Integer) item.get("capacity") >= 1500); + } + + store.addProductToSiteA(1000, 10000); + + store.setPrice(7000); + itemsByPrice = store.getItemsByPrice(); + assertEquals(itemsByPrice.size(), 1); + for (Map item: itemsByPrice) { + assertTrue((Integer) item.get("price") <= 7000); + } + store.setPrice(12000); + itemsByPrice = store.getItemsByPrice(); + assertEquals(itemsByPrice.size(), 3); + for (Map item: itemsByPrice) { + assertTrue((Integer) item.get("price") <= 12000); + } + + store.setCapacity(500); + itemsByCapacity = store.getItemsByCapacity(); + assertEquals(itemsByCapacity.size(), 3); + for (Map item: itemsByCapacity) { + assertTrue((Integer) item.get("capacity") >= 500); + } + store.setCapacity(1500); + itemsByCapacity = store.getItemsByCapacity(); + assertEquals(itemsByCapacity.size(), 1); + for (Map item: itemsByCapacity) { + assertTrue((Integer) item.get("capacity") >= 1500); + } + } + +}