Skip to content
Snippets Groups Projects
Commit dd686d49 authored by olale's avatar olale
Browse files

Moved assignment code to clean repository

parents
No related branches found
No related tags found
No related merge requests found
Showing
with 576 additions and 0 deletions
/bin/
.DS_Store
*.class
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Builder_State</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
/builder/
/state/
<!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 "">
<?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>
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
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();
}
};
}
}
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();
}
}
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);
}
}
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);
}
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);
}
}
}
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);
}
}
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();
}
}
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);
}
}
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");
}
}
package state;
interface State {
void insertQuarter(GumballMachine machine);
void ejectQuarter(GumballMachine gumballMachine);
void dispense(GumballMachine gumballMachine);
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test/src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/yamlbeans-1.0.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ConfigReader</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
/domain/
/main/
/xml/
/yaml/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment