diff --git a/Task_A/projects.dtd b/Task_A/projects.dtd deleted file mode 100644 index fb2c024b466ba982f66515dcd4c7ebf34b8a798a..0000000000000000000000000000000000000000 --- a/Task_A/projects.dtd +++ /dev/null @@ -1,19 +0,0 @@ -<!ELEMENT projects (project)*> - -<!ELEMENT project (#PCDATA | br | b | i)*> -<!ATTLIST project - title CDATA "" - dept CDATA "" - tutorname CDATA "" - tutormail CDATA "" - group CDATA ""> - -<!ELEMENT br EMPTY> - -<!ELEMENT b (#PCDATA)> - -<!ELEMENT i (#PCDATA)> - -<!ELEMENT a (#PCDATA)> -<!ATTLIST a - href CDATA ""> diff --git a/Task_A/projects.xml b/Task_A/projects.xml deleted file mode 100644 index 74d729886e98383874afaeaec8de636d02bf4f91..0000000000000000000000000000000000000000 --- a/Task_A/projects.xml +++ /dev/null @@ -1,118 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE projects SYSTEM "projects.dtd"> - -<projects> - -<!-- ===== IDA ===== ====================================================== --> - -<project dept="IDA" title="Sensornoder med minimotes (1)" - group="IT1-bg1" tutorname="Massimiliano Raciti" tutormail="Massimiliano.Raciti@liu.se"> - -Tr�dl�sa sensorn�t (en. wireless sensor networks) �r numera ett stort -f�lt inom forskning och utveckling med m�nga kommande -till�mpningsomr�den, tex �vervakning av vulkanutbrott, smarta hem och -andra st�rre byggnader, och �vervakning av olika naturfenomen. I detta -projekt f�r ni utf�ra experiment med sm� sensorenheter som kan -kommunicera m�tningar till en datainsamlare (en mini laptop). - -Ni experimenterar med data om temperatur, luftfuktighet och ljus �ver -en tidsperiod. Ni kommer �ven att studera hur den tr�dl�sa -radiokommunikationen p�verkas av olika faktorer som avst�nd, fysiska -hinder, eller r�relser. - </project> - -<project dept="IDA" title="Sensornoder med minimotes (2)" - group="IT1-bg2" tutorname="Ekhiotz Jon Vergara Alonso" tutormail="ekhiotz.vergara@liu.se"> - -Tr�dl�sa sensorn�t (en. wireless sensor networks) �r numera ett stort -f�lt inom forskning och utveckling med m�nga kommande -till�mpningsomr�den, tex �vervakning av vulkanutbrott, smarta hem och -andra st�rre byggnader, och �vervakning av olika naturfenomen. I detta -projekt f�r ni utf�ra experiment med sm� sensorenheter som kan -kommunicera m�tningar till en datainsamlare (en mini laptop). - -Ni experimenterar med data om temperatur, luftfuktighet och ljus �ver -en tidsperiod. Ni kommer �ven att studera hur den tr�dl�sa -radiokommunikationen p�verkas av olika faktorer som avst�nd, fysiska -hinder, eller r�relser. </project> - -<!-- ===== IMT ===== ====================================================== --> - -<project dept="IMT" title="Hur fungerar hj�rna-dator-gr�nssnitt?" - group="IT1-bg3" tutorname="H�kan �rman" tutormail="hakan.orman@liu.se"> -Att med hj�lp av datorer �verf�ra tankar till handling genom att till -exempel styra proteser skulle vara till stor hj�lp f�r personer som av -olika anledningar inte kan kontrollera sin muskelaktivitet. Forskning -och utveckling har tagit oss en god bit p� v�g mot det som f�r inte s� -l�nge sedan var ren science fiction. Hur fungerar den h�r tekniken? -Vad �r f�ruts�ttningarna f�r att den ska fungera och vilka -anv�ndningsomr�den finns? Projektet omfattar en teoretisk studie och -praktiska tester med en enkel utrustning som tolkar tre typer av -biopotentialer. -</project> - - -<!-- ===== ISY ========= ================================================ --> - -<project dept="ISY" title="Modellering av ett embryos utveckling" - group="IT1-bg4" tutorname="Robert Forchheimer" tutormail="robert.forchheimer@liu.se"> -De f�rsta celldelningarna n�r ett d�ggdjur bildas skapar en geometrisk -konstellation av celler som alltid �r densamma f�r varje exemplar i -arten. En teori �r att det �r r�tt enkla mekaniska egenskaper (tryck, -vidh�ftning) som styr detta. I v�r forskargrupp har vi visat med 3D -datorgrafik-modeller att teorin f�refaller st�mma �tminstone upp till -6-8 celler. Projektet g�r ut p� att se om man kan l�gga till -ytterligare enkla villkor f�r att f� �verensst�mmelse n�r cellklumpen -forts�tter att dela sig. -</project> - -<project dept="ISY" title="Hur fungerar djupskattning fr�n stereobilder?" - group="IT1-bg5" tutorname="Kristoffer �fj�ll" tutormail="kristoffer.ofjall@liu.se"> -Ett viktigt steg i det m�nskliga synsinnet best�r i att skatta -avst�ndet till det vi ser. Detta g�rs bland annat genom att analysera -skillnader mellan informationen fr�n de b�da �gonen. P� samma s�tt -kan skillnader mellan bilder fotograferade fr�n olika positioner -anv�ndas f�r att automatiskt skapa en 3D-modell med hj�lp av -datorseendealgoritmer. <br/><br/> I det h�r projektet studeras en -enkel men kraftfull metod f�r att skatta djup fr�n tv� -fotografier. Deltagarna f�r stifta bekanskap med de matematiska -verktyg som beh�vs f�r att l�sa problemet, samt ber�kningsmilj�n -MATLAB, som anv�nds i m�nga kurser vid LiTH, och som �r ett mycket -anv�ndbart verktyg f�r att l�sa ber�kningsproblem inom de flesta -ingenj�rsomr�dena. -</project> - -<!-- ===== TEMA ===== ===================================================== --> - -<project dept="TEMA" - title="Vad �r en medicinsk simulator?" - group="IT1-bg6" tutorname="Eva T�rnqvist" tutormail="eva.tornqvist@liu.se"> -Medicinska simulatorer anv�nds idag ibland annat i undervisning f�r -att rekonstruera en fysisk kropp, en patient, i en f�rest�lld -situation. Detta ger m�jlighet f�r exempelvis l�karstudenter att �va -p� olika ingrepp och situationer som kan uppst�. Syftet med projektet -�r att beskriva vad en medicinsk simulator �r och f�rklara hur den -anv�nds i den medicinska utvecklingen. Fr�gor som b�r diskuteras och -analyseras �r: Vad �r en medicinsk simulator? Hur fungerar en -medicinsk simulator? Hur anv�nds en medicinsk simulator i den -medicinska utvecklingen? -</project> - -<project dept="TEMA" - title="Hur fungerar IT och funktionshinder?" - group="IT1-bg7" tutorname="Eva T�rnqvist" tutormail="eva.tornqvist@liu.se"> -Tillg�ng till dator och Internet har �kat kraftigt i Sverige under de -senaste �ren och allt fler tj�nster finnas att tillg� p� Internet. -Informationstekniken har blivit en allt viktigare resurs f�r individer och -hush�ll f�r att hantera olika vardagliga situationer men hur fungerar det -f�r personer med funktionshinder? Man r�knar med att 10-20 % av befolkningen -i Europa har ett funktionshinder och i Sverige uppskattas antalet personer -med funktionshinder till ca 1,3 miljoner. Bland m�lgrupperna �r exempelvis -personer med synskador, h�rselskador och d�vhet, tal- och -kommunikationssv�righeter, r�relsehinder och kognitiva funktionshinder. Det -h�r projektets syfte �r unders�ka i vilken utstr�ckning funktionshindrade -har blivit delaktiga i IT-utvecklingen. Har IT till exempel skapat nya -hinder eller suddat ut tidigare gr�nser? -</project> - -</projects> diff --git a/Task_A/src/Enumerable.java b/Task_A/src/Enumerable.java new file mode 100644 index 0000000000000000000000000000000000000000..177bce922b7d0268b8951c08ba5690c36647aeb1 --- /dev/null +++ b/Task_A/src/Enumerable.java @@ -0,0 +1,47 @@ + + +import java.util.Collection; +import java.util.Iterator; + +public class Enumerable<T> implements Iterable<T> { + + private Iterator<T> iterator; + + public Enumerable(Collection<T> collection) { + this.iterator = collection.iterator(); + } + + Enumerable<T> where(IPredicate<T> predicate) { + Iterator<T> oldIterator = iterator; + this.iterator = new Iterator<T>() { + + @Override + public boolean hasNext() { + return oldIterator.hasNext(); + } + + @Override + public T next() { + T item = oldIterator.hasNext() ? oldIterator.next() : null; + while (oldIterator.hasNext() && !predicate.accept(item)) { + item = oldIterator.next(); + } + return item; + } + }; + return this; + } + + @Override + public Iterator<T> iterator() { + return iterator; + } + + void forEach(IAction<T> action) { + while (iterator.hasNext()) { + T t = (T) iterator.next(); + action.perform(t); + } + } + +} diff --git a/Task_A/src/IAction.java b/Task_A/src/IAction.java new file mode 100644 index 0000000000000000000000000000000000000000..3ac5d28f6bebc52f4616b6d18b1d1a7ffc95736d --- /dev/null +++ b/Task_A/src/IAction.java @@ -0,0 +1,8 @@ + + + +public interface IAction<T> { + + void perform(T t); + +} diff --git a/Task_A/src/IPredicate.java b/Task_A/src/IPredicate.java new file mode 100644 index 0000000000000000000000000000000000000000..0904949bff4550fe40862d0f20bba70c847c2707 --- /dev/null +++ b/Task_A/src/IPredicate.java @@ -0,0 +1,8 @@ + + + +public interface IPredicate<T> { + + boolean accept(T element); + +} diff --git a/Task_A/src/Test.java b/Task_A/src/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..6f38516f1926177e588d87787c017f779da399c3 --- /dev/null +++ b/Task_A/src/Test.java @@ -0,0 +1,51 @@ + + +import java.text.MessageFormat; +import java.util.ArrayList; + +public class Test { + + public static void main(String[] args) { + final ArrayList<Integer> arrayList = new ArrayList<Integer>(); + arrayList.add(2); + arrayList.add(4); + arrayList.add(5); + arrayList.add(7); + + Enumerable<Integer> enumerable = new Enumerable<>(arrayList); + Enumerable<Integer> evenNumbers = enumerable + .where(new IPredicate<Integer>() { + + @Override + public boolean accept(Integer element) { + return element % 2 == 0; + } + }); + + Enumerable<Integer> oddNumbers = enumerable + .where(new IPredicate<Integer>() { + + @Override + public boolean accept(Integer element) { + return element % 2 == 1; + } + }); + + evenNumbers.forEach(new IAction<Integer>() { + + @Override + public void perform(Integer t) { + System.out.println(MessageFormat.format("Even number {0}", t)); + } + }); + + oddNumbers.forEach(new IAction<Integer>() { + + @Override + public void perform(Integer t) { + System.out.println(MessageFormat.format("Odd number{0}", t)); + } + }); + } + +} diff --git a/Task_A/src/builder/AbstractConverter.java b/Task_A/src/builder/AbstractConverter.java deleted file mode 100644 index 89dccec0f9fee42a9c8f52c86a26fcf5e16c76d6..0000000000000000000000000000000000000000 --- a/Task_A/src/builder/AbstractConverter.java +++ /dev/null @@ -1,25 +0,0 @@ -package builder; - -public abstract class AbstractConverter implements NodeConverter { - - public AbstractConverter() { - super(); - } - - @Override - public void ReadProject(String projectName) { - } - - @Override - public void ReadSupervisor(String supervisorName) { - } - - @Override - public void ReadEmail(String email) { - } - - @Override - public void ReadDescription(String description) { - } - -} \ No newline at end of file diff --git a/Task_A/src/builder/DOMNodes.java b/Task_A/src/builder/DOMNodes.java deleted file mode 100644 index f3f8604fc9c2c67288f4535519acc84c3e871f25..0000000000000000000000000000000000000000 --- a/Task_A/src/builder/DOMNodes.java +++ /dev/null @@ -1,39 +0,0 @@ -package builder; - -import java.util.Iterator; - -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -public class DOMNodes implements Iterable<Node> { - - private NodeList nodes; - - public DOMNodes(NodeList nodes) { - this.nodes = nodes; - } - - @Override - public Iterator<Node> iterator() { - return new Iterator<Node>() { - - private int i=0; - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - - @Override - public Node next() { - return nodes.item(i++); - } - - @Override - public boolean hasNext() { - return i < nodes.getLength(); - } - }; - } - -} diff --git a/Task_A/src/builder/DocReader.java b/Task_A/src/builder/DocReader.java deleted file mode 100644 index d25022f96772c05c75d9eaebf2d09ab192bc8e68..0000000000000000000000000000000000000000 --- a/Task_A/src/builder/DocReader.java +++ /dev/null @@ -1,53 +0,0 @@ -package builder; - -import java.io.IOException; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.xml.sax.SAXException; - -public class DocReader { - - private NodeConverter converter; - private String fileName; - - public DocReader(NodeConverter converter, String fileName) { - this.converter=converter; - this.fileName=fileName; - } - - public void build() { - DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); - try { - DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); - - Document document = documentBuilder.parse(fileName); - DOMNodes projectNodes = new DOMNodes(document.getElementsByTagName("project")); - for (Node node : projectNodes) { - converter.ReadProject(getNodeAttribute(node, "title")); - converter.ReadEmail(getNodeAttribute(node,"tutormail")); - converter.ReadSupervisor(getNodeAttribute(node, "tutorname")); - converter.ReadDescription(node.getNodeValue()); - } - - } catch (ParserConfigurationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (SAXException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private String getNodeAttribute(Node node, String attributeName) { - return node.getAttributes().getNamedItem(attributeName).getNodeValue(); - } - -} diff --git a/Task_A/src/builder/EmailListConverter.java b/Task_A/src/builder/EmailListConverter.java deleted file mode 100644 index 65a1b324ca9452538e916d25705ead26872a466f..0000000000000000000000000000000000000000 --- a/Task_A/src/builder/EmailListConverter.java +++ /dev/null @@ -1,20 +0,0 @@ -package builder; - -import java.util.ArrayList; - -public class EmailListConverter extends AbstractConverter implements - NodeConverter { - - ArrayList<String> emailList = new ArrayList<String>(); - - public ArrayList<String> getEmailList() { - return emailList; - } - - @Override - public void ReadEmail(String email) { - emailList.add(email); - } - - -} diff --git a/Task_A/src/builder/NodeConverter.java b/Task_A/src/builder/NodeConverter.java deleted file mode 100644 index 6068b6190b9d99fbb7770d9604c0b16287aa46d4..0000000000000000000000000000000000000000 --- a/Task_A/src/builder/NodeConverter.java +++ /dev/null @@ -1,11 +0,0 @@ -package builder; - -public interface NodeConverter { - - public void ReadProject(String projectName); - public void ReadSupervisor(String supervisorName); - public void ReadEmail(String email); - public void ReadDescription(String description); - - -} diff --git a/Task_A/src/builder/ParseTest.java b/Task_A/src/builder/ParseTest.java deleted file mode 100644 index 06b93a5b1d79195a6f5f11db57949657c47acba5..0000000000000000000000000000000000000000 --- a/Task_A/src/builder/ParseTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package builder; - -import java.util.ArrayList; - -public class ParseTest { - - /** - * @param args - */ - public static void main(String[] args) { - EmailListConverter emailBuilder = new EmailListConverter(); - DocReader reader = new DocReader(emailBuilder, "projects.xml"); - reader.build(); - ArrayList<String> emailList = emailBuilder.getEmailList(); - System.out.println("------- Email list ---------"); - for (String email : emailList) { - System.out.println(email); - } - SupervisorConverter supervisorConverter = new SupervisorConverter(); - reader = new DocReader(supervisorConverter, "projects.xml"); - reader.build(); - ArrayList<String> supervisorList = supervisorConverter.getSupervisors(); - System.out.println("--------- Supervisor list ---------"); - for (String supervisor : supervisorList) { - System.out.println(supervisor); - } - - - } - -} diff --git a/Task_A/src/builder/SupervisorConverter.java b/Task_A/src/builder/SupervisorConverter.java deleted file mode 100644 index d9569ea36fc18881ba64eb51c096e3859157d675..0000000000000000000000000000000000000000 --- a/Task_A/src/builder/SupervisorConverter.java +++ /dev/null @@ -1,18 +0,0 @@ -package builder; - -import java.util.ArrayList; - -public class SupervisorConverter extends AbstractConverter { - - private ArrayList<String> supervisors = new ArrayList<String>(); - - public ArrayList<String> getSupervisors() { - return supervisors; - } - - @Override - public void ReadSupervisor(String supervisorName) { - supervisors.add(supervisorName); - } - -} diff --git a/Task_A/src/state/GumballMachine.java b/Task_A/src/state/GumballMachine.java deleted file mode 100755 index a3a50c8c2a91a00a21ee14fa5f598223c7aebe1e..0000000000000000000000000000000000000000 --- a/Task_A/src/state/GumballMachine.java +++ /dev/null @@ -1,110 +0,0 @@ -package state; - -public class GumballMachine { - - final static int SOLD_OUT = 0; - final static int NO_QUARTER = 1; - final static int HAS_QUARTER = 2; - final static int SOLD = 3; - - int state = SOLD_OUT; - int count = 0; - - public GumballMachine(int count) { - this.count = count; - if (count > 0) { - state = NO_QUARTER; - } - } - - public void insertQuarter() { - if (state == HAS_QUARTER) { - System.out.println("You can't insert another quarter"); - } else if (state == NO_QUARTER) { - state = HAS_QUARTER; - System.out.println("You inserted a quarter"); - } else if (state == SOLD_OUT) { - System.out.println("You can't insert a quarter, the machine is sold out"); - } else if (state == SOLD) { - System.out.println("Please wait, we're already giving you a gumball"); - } - } - - public void ejectQuarter() { - if (state == HAS_QUARTER) { - System.out.println("Quarter returned"); - state = NO_QUARTER; - } else if (state == NO_QUARTER) { - System.out.println("You haven't inserted a quarter"); - } else if (state == SOLD) { - System.out.println("Sorry, you already turned the crank"); - } else if (state == SOLD_OUT) { - System.out.println("You can't eject, you haven't inserted a quarter yet"); - } - } - - - - - public void turnCrank() { - if (state == SOLD) { - System.out.println("Turning twice doesn't get you another gumball!"); - } else if (state == NO_QUARTER) { - System.out.println("You turned but there's no quarter"); - } else if (state == SOLD_OUT) { - System.out.println("You turned, but there are no gumballs"); - } else if (state == HAS_QUARTER) { - System.out.println("You turned..."); - state = SOLD; - dispense(); - } - } - - public void dispense() { - if (state == SOLD) { - System.out.println("A gumball comes rolling out the slot"); - count = count - 1; - if (count == 0) { - System.out.println("Oops, out of gumballs!"); - state = SOLD_OUT; - } else { - state = NO_QUARTER; - } - } else if (state == NO_QUARTER) { - System.out.println("You need to pay first"); - } else if (state == SOLD_OUT) { - System.out.println("No gumball dispensed"); - } else if (state == HAS_QUARTER) { - System.out.println("No gumball dispensed"); - } - } - - public void refill(int numGumBalls) { - this.count = numGumBalls; - state = NO_QUARTER; - } - - public String toString() { - StringBuffer result = new StringBuffer(); - result.append("\nMighty Gumball, Inc."); - result.append("\nJava-enabled Standing Gumball Model #2004\n"); - result.append("Inventory: " + count + " gumball"); - if (count != 1) { - result.append("s"); - } - result.append("\nMachine is "); - if (state == SOLD_OUT) { - result.append("sold out"); - } else if (state == NO_QUARTER) { - result.append("waiting for quarter"); - } else if (state == HAS_QUARTER) { - result.append("waiting for turn of crank"); - } else if (state == SOLD) { - result.append("delivering a gumball"); - } - result.append("\n"); - return result.toString(); - } -} - - diff --git a/Task_A/src/state/GumballMachineTestDrive.java b/Task_A/src/state/GumballMachineTestDrive.java deleted file mode 100755 index f9e8e3b9561315f87f6d9dc37374fc8db050a515..0000000000000000000000000000000000000000 --- a/Task_A/src/state/GumballMachineTestDrive.java +++ /dev/null @@ -1,39 +0,0 @@ -package state; - -public class GumballMachineTestDrive { - - public static void main(String[] args) { - GumballMachine gumballMachine = new GumballMachine(5); - - System.out.println(gumballMachine); - - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - - System.out.println(gumballMachine); - - gumballMachine.insertQuarter(); - gumballMachine.ejectQuarter(); - gumballMachine.turnCrank(); - - System.out.println(gumballMachine); - - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - gumballMachine.ejectQuarter(); - - System.out.println(gumballMachine); - - gumballMachine.insertQuarter(); - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - - System.out.println(gumballMachine); - } -} diff --git a/Task_A/src/state/NoQuarterState.java b/Task_A/src/state/NoQuarterState.java deleted file mode 100644 index d9a61a451dcfef1c0c867819a7afbccc81d01ed4..0000000000000000000000000000000000000000 --- a/Task_A/src/state/NoQuarterState.java +++ /dev/null @@ -1,22 +0,0 @@ -package state; - -public class NoQuarterState implements State { - - @Override - public void insertQuarter(GumballMachine machine) { - machine.state = GumballMachine.HAS_QUARTER; - System.out.println("You inserted a quarter"); - } - - @Override - public void ejectQuarter(GumballMachine gumballMachine) { - System.out.println("You haven't inserted a quarter"); - } - - @Override - public void dispense(GumballMachine gumballMachine) { - - System.out.println("You need to pay first"); - } - -} diff --git a/Task_A/src/state/State.java b/Task_A/src/state/State.java deleted file mode 100644 index d1edcc52dc58b7e1c732cbc6bc2c0447c9f2c7ea..0000000000000000000000000000000000000000 --- a/Task_A/src/state/State.java +++ /dev/null @@ -1,11 +0,0 @@ -package state; - -interface State { - void insertQuarter(GumballMachine machine); - - void ejectQuarter(GumballMachine gumballMachine); - - void dispense(GumballMachine gumballMachine); - - -}