Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tie/ohj2/ve/2025/kevat/ohj2
  • hasemajo/ohj2
  • nikaleko/ohj2
  • tntvanha/ohj2
  • lemaline/ohj2
  • rintahe/ohj2
  • tersaton/ohj2
  • tornhale/ohj2
  • pjyypiix/ohj-2
  • aneejoko/ohj2
  • reponaw/ohj2
  • saarian/ohj2
  • niemimm/ohj2
  • jppaasww/ohj2-2025k
  • ssniinim/ohj2
  • niememan/ohj2
  • milimaas/ohj2
  • kallmovu/ohj2
  • adaoliro/ohj2
  • tojuhann/ohj2
  • vevejuha/ohj2
  • mieikrla/ohj2
  • miankort/ohj2
  • saeteppo/ohj2
  • saelripa/ohj2
  • saniitty/ohj2
  • nsmietyt/ohj2
  • mikkolto/ohj2
  • mmuhonen/ohj2k25
  • saukkota/ohj-2-ht
  • eenorta/ohj2
  • oapaaso/ht-2
  • eeeeoino/ohj2
  • hietmaem/ohj2
  • vvlaspa/ohj2ht
  • lalaajal/ohj2
  • pepartyy/ohj2
  • loukovjv/ohj2
  • vihtkaan/ohj2
  • annelinu/ohjelmointi2
  • lehtikmi/ohj2
  • ihakalel/ohj2
  • aichinos/ohj2
  • lahteela/ohj-2-ht
  • pellrata/ohj2
  • iljinisa/ohj2
  • nkeuren/ohj2
  • hiltunma/ohj2
  • esshelkr/ohj2
  • vianelo/ohj2
  • kousaepw/ohj-2-ht
  • amheikkz/ohj2
  • jatirkko/ohj2
  • akharine/ohj2
  • rlokilja/ohj2
  • eskrliim/ohj2
  • masakoiv/ohj2
  • toivjope/ohj2
  • sasalons/ohj2
  • hirvepjw/ohj2
  • lajoveps/vuororekisteri
  • lelitirr/ohj-225
  • juhsansa/ohj2
  • essmarpe/ohj2
  • lehtlrvt/ohj2
  • setilus/ohj2
  • julipits/ohj2
  • kivistve/ohj2
  • erpajala/ohj2
  • pslohi/ohj2
  • sediiv/ohj2
  • jovesaar/ohj2
  • jutaalko/ohj2
  • valltoha/ohj2
  • ruotvive/ohj2ht
  • kkvalke/ohj2
  • aetuukka/espanjakohderekisteri
  • pdanilei/ohj2ht
  • lahtlule/ohj2
  • jaemvahu/ohj2
  • kantsiii/ohj2
  • tototuru/ohj2
  • elmotabe/ohj2
  • sutinele/ohj2
  • vepajuna/ohj2
  • tornittu/reseptilista
  • sasoleht/ohj2
  • eemjorto/ohj2
  • gagolzar/ohj2
  • sievanee/ohj2
  • nobekail/ohj2
  • mamiparv/ohj2
  • halolpvz/ohj2
  • tukilo/ohj2
  • mmleppis/ohj2
  • tmruisma/ohj2
  • aajataip/ohj-2
  • salonevs/ohj-2
  • ygulusen/ohj2
  • saarakka/ohj2
  • eakoskix/ohj2
  • lamminm/ohj2ht
  • sellmmv/salibandynpelaajarekisteri
  • tuoskopp/ohj2
  • haarates/ohj-2
  • jormlsuu/ohj2
  • lihiauka/ohj2
  • eeemkarv/ohj2
  • uekolehm/ohj2
  • smkolari/ohj-2-a
  • spicjrxz/ohj2
  • maalvirt/ohj-2-ht
  • hietaolo/ohj2ht
  • rtmatilt/ohj2
  • veevjoen/ohj2
  • lainejee/ohj2
  • pohtojoj/tuotelistaaja
  • jokayli/ohj2
  • sulasaal/ohj2
  • kalloupe/ohj2
  • apeshhhh/ohj2
  • kopperp/ohj2
  • garammtu/ohj2
  • ettalaes/ohj2
  • rajanije/ohj2
  • timovaan/ohj2
  • mkvuonos/ohj2
  • tuomiluu/ohj2
  • konttijm/ohj2
  • palolala/ohj2
  • vejokauk/ohj2
  • peihanus/ohj2
  • itsario/ohj2
  • hejumivu/ohj2
  • isojarto/ohj2
  • pirinpot/ohj2ht
  • oihietan/ohj2
  • niemhizz/ohj2
  • oparve/ohj2
  • truhtejo/ohj-2-ht
  • malineps/ohj-2-pelivalikoima
  • kylkii/ohj2
  • emigrank/ohj2
  • samavakk/ohj2
  • lausofla/ohj2
  • arossors/ohj-2-2
  • nurmsajo/ohj2
  • mattarma/ohj2
  • akjuhesa/ohj-2-ht
  • ovevalka/ohj2
  • lequyanh/ohj-2-ht
  • jasyvays/ohj2
  • lindtope/ohj2
  • kaipainm/ohj2
  • peillips/ohj2
  • miwamich/ohj2
  • anpahypp/ohj2harkka
  • kreenk/ohj2
  • iiaumaoi/ohj2
  • jmsutizy/ohj-2-25
  • conrcsir/ohj2
  • palaakho/ht-metsastyspaivakirja
  • makelkjt/ohj2
  • jooantni/ohj2
  • ttkelaw/ohj-2-2025-k
  • koivishe/kuntohalli-oy
  • laleiho/harjoitustyo-ohj-2
  • joolmatt/ohj2-ht
  • akrasa/ohj2
  • rikretel/ohj-2-ht
  • vuorelma/ohj2
171 results
Show changes
Commits on Source (74)
Showing
with 638 additions and 1 deletion
......@@ -71,4 +71,4 @@ nb-configuration.xml
##############################
## OS X
##############################
.DS_Store
\ No newline at end of file
.DS_Store
### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
\ No newline at end of file
File added
package SearchableObject;
public interface SearchableObject {
String getSearchableValue();
}
<?xml version="1.0" encoding="UTF-8"?>
<?import DynamicComboBox.DynamicComboBox?>
<?import javafx.collections.FXCollections?>
<?import java.lang.String?>
<DynamicComboBox xmlns="http://javafx.com/javafx/21"
xmlns:fx="http://javafx.com/fxml/1"
fx:id="dynamicComboBox">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Item 1"/>
<String fx:value="Item 2"/>
<String fx:value="Item 3"/>
</FXCollections>
</items>
</DynamicComboBox>
\ No newline at end of file
package DynamicComboBox;
import javafx.beans.property.ListProperty;
import javafx.beans.property.SimpleListProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
import javafx.scene.input.KeyEvent;
import java.util.*;
/**
* Oma versio ComboBox containerista, sisältää haun ja uuden lisäyksen tulkinnan
*/
public class DynamicComboBox extends ComboBox<java.lang.String> {
private final ListProperty<String> sisalto = new SimpleListProperty<>(FXCollections.observableArrayList());
/**
* Attribuutti sisalto sisältää kaiken comboxin sisällön ja toimii myös scenebuilderin kanssa yhteensopivana
*/
public DynamicComboBox() {
super();
this.getEditor().addEventHandler(KeyEvent.KEY_TYPED, this::haku);
this.getEditor().setOnAction(_ -> tutkiValinta());
this.sisalto.addListener((_, _, newValue) ->asetaSisalto(newValue) );
}
/**
* Seuraavat metodit ovat molemmat sisallon lisäämistä/asettamsita varten
*
* @param sisalto mikä merkkijono/sisalto kokoelma comboboxiin laitetaan
*/
public void asetaSisalto(String[] sisalto) {
this.getItems().setAll(sisalto);
this.sisalto.setAll(Arrays.asList(sisalto));
}
public void asetaSisalto(List<String> sisalto) {
this.getItems().setAll(sisalto);
this.sisalto.setAll(sisalto);
}
@FXML
public void asetaSisalto(ObservableList<String> sisalto) {
this.getItems().setAll(sisalto);
this.sisalto.set(sisalto);
}
@FXML
public ListProperty<String> sisaltoProperty() {
return sisalto;
}
@FXML
public ObservableList<String> getSisalto() {
return sisalto.get();
}
/**
* lisää sisältöä comboboxiin
*
* @param uusi merkkijono, joka lisätään
*/
public void lisaaSisaltoa(String uusi) {
this.getItems().add(uusi);
this.sisalto.add(uusi);
}
/**
* Vallinan tutkimis metodi Tutkii mitä käyttäjä on sijoittanut ComboBoxiin, jos on uusi valinta,
* niin kysytään halutaanko se lisätä valintoihin. Instanssi pohjainen lisäys, jos lisäys halutaan
* lopulliseksi tulee se tehdä itse
*/
private void tutkiValinta() {
java.lang.String valinta = this.getEditor().getText();
if (valinta == null) {
return;
}
valinta = valinta.trim();
if (valinta.isEmpty()) {
return;
}
// katsotaan löytyykö valinta
boolean loytyko = false;
for (String item : sisalto) {
if (valinta.equals(item)) {
loytyko = true;
break;
}
}
//jos ei löytynyt, niin avataan dialogi ja kysytään halutaanko valinta lisätä
if (!loytyko) {
tallennusIkkuna(valinta);
} else {
this.getEditor().requestFocus();
}
}
/**
private void sisaltoMuunnin(List<java.lang.String> items) {
if(!sisalto.isEmpty() && sisalto.getFirst() instanceof SearchableObject){
for (String item : sisalto) {
SearchableObject h = (SearchableObject) item;
items.add(h.getSearchableValue());
}
} else if (sisalto.isEmpty() && sisalto.getFirst() instanceof java.lang.String) {
for (String item : sisalto) {
java.lang.String h = (java.lang.String) item;
items.add(h);
}
}
}
*/
/**
* Metodi comboboxista etsimistä varten, Algoritmi toimii vertaamalla käyttäjän tekstiä
* items listan sisältöihin ja lisää ne comboxiin, mitkä vastaavat hakusanaa.
* Jos haku tyhjä, niin laitetaan kaikki comboboxiin, tulostetaan ja poistutaan.
* Aikavaativuus kasvaa lineaarisesti, items listan kasvaessa
*/
private void haku(KeyEvent k) {
//estetään hakeminen, jos painettu enter-nappia
if (k.getCharacter().equals("\r")) {
tutkiValinta();
return;
}
java.lang.String hakuSana = this.getEditor().getText() + k.getCharacter();
hakuSana = hakuSana.trim();
//varmistetaan, että hakusana ei ole tyhjä, jos on niin näytetään kaikki vaihtoehdot
if (hakuSana.isEmpty()) {
this.getItems().setAll(sisalto);
this.show();
return;
}
//käydään läpi jokainen vaihtoehto ja näytetään vain ne jotka ovat yhteensopivia
List<java.lang.String> naytettavat = new ArrayList<>();
for (java.lang.String item : sisalto) {
if (item.startsWith(hakuSana)) {
naytettavat.add(item);
}
}
this.getItems().setAll(naytettavat);
}
/**
* Tallennusikkunan esittävä metodi
*
* @param valinta valinta joka tallennetaan
*/
private void tallennusIkkuna(java.lang.String valinta) {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Valitse");
alert.setHeaderText(null);
alert.setContentText("Haluatko tallentaa valinnan " + valinta + "?");
ButtonType buttonTypeYes = new ButtonType("Kyllä", ButtonBar.ButtonData.OK_DONE);
ButtonType buttonTypeCancel = new ButtonType("Ei", ButtonBar.ButtonData.CANCEL_CLOSE);
alert.getButtonTypes().setAll(buttonTypeYes, buttonTypeCancel);
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == buttonTypeYes) {
sisalto.add(valinta);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>LisaaReissuGUIController.java</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>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="C:/kurssit/jar/fxgui.jar"/>
<classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Ohj2HT</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<component inheritJdk="true">
<contentEntry url="file://$MODULE_DIR$"/>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="ASCII"?>
<anttasks:AntTask xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:anttasks="http://org.eclipse.fx.ide.jdt/1.0" buildDirectory="${project}/build">
<deploy>
<application name="Ohj2HT"/>
<info/>
</deploy>
<signjar/>
</anttasks:AntTask>
package Luokat;
import java.util.HashMap;
import java.util.List;
public class KokoTulkki {
private final HashMap<Integer, String> koot = new HashMap<>();
public KokoTulkki() {
koot.put(1,"Sintti");
koot.put(2,"Keskikokoinen");
koot.put(3,"Iso");
}
/**
*
* @param id Id, jonka kokoa etsitään
* @return koko merkkijonona
* @example
* <pre name="test">
* KokoTulkki k = new KokoTulkki();
* k.getKokoFromId(1) === "Sintti";
* k.getKokoFromId(3) === "Iso";
* k.getKokoFromId(5000) === null;
* </pre>
*/
public String getKokoFromId(int id){
return koot.get(id);
}
/**
*
* @param koko minkä koon Id:tä etsitään
* @return Id:n kokonaislukuna
* @example
* <pre name="test">
* KokoTulkki k = new KokoTulkki();
* k.getIdFromKoko("Iso") === 3;
* k.getIdFromKoko("Sintti") === 1;
* k.getIdFromKoko("pöofkeof") === -1;
*
* </pre>
*/
public int getIdFromKoko(String koko){
List<Integer> idt = koot.keySet().stream().toList();
for(Integer i : idt){
if(koko.equals(koot.get(i))){
return i;
}
}
return -1;
}
public static void main(String[] args) {
KokoTulkki k = new KokoTulkki();
System.out.println(k.getKokoFromId(1));
String s = "Sintti";
System.out.println(k.getIdFromKoko(s));
}
}
package Luokat;
import java.util.HashMap;
import java.util.List;
public class LajiTulkki {
private HashMap<Integer,String> lajit = new HashMap<>();
public LajiTulkki(){
lajit.put(1,"ahven");
lajit.put(2,"kuha");
}
/**
*
* @param id mistä id:stä etsitään
* @return lajin nimen merkkijonona
* @example
* <pre name="test">
* LajiTulkki l = new LajiTulkki();
* l.getLajiFromId(1) === "ahven";
* l.getLajiFromId(2) === "kuha";
* </pre>
*/
public String getLajiFromId(int id){
return lajit.get(id);
}
/**
*
* @param laji laji jonka Id:tä etsitään
* @return palauttaa lajin id:n kokonaislukuna
* @example
* <pre name="test">
* LajiTulkki l = new LajiTulkki();
* l.getIdFromLaji("kuha") === 2;
* l.getIdFromLaji("ahven") === 1;
* l.getIdFromLaji("wmfwfow") === -1;
* </pre>
*/
public int getIdFromLaji(String laji){
List<Integer> idt = lajit.keySet().stream().toList();
for(Integer i : idt){
if(lajit.get(i).equals(laji)){
return i;
}
}
return -1;
}
}
package Luokat;
public class Reissu {
private String Pvm;
public int reissunTag;
private String sijainti;
private String keli;
public Reissu(int reissunTag, String Pvm, String sijainti, String keli) {
this.Pvm = Pvm;
this.reissunTag = reissunTag;
this.sijainti = sijainti;
this.keli = keli;
}
public int getTag() {
return reissunTag;
}
public String getPaivamaara() {
return Pvm;
}
public String getSijainti() {
return sijainti;
}
public String getKeli() {
return keli;
}
public String toString() {
String tag = Integer.toString(reissunTag);
return tag + "|" + Pvm + "|" + sijainti + "|" + keli;
}
//helppo testi
public static void main(String[] args) {
Reissu testi = new Reissu(1, "12.12.2025", "Jyväskylä", "lumisade");
System.out.print(testi);
}
}
package Luokat;
public class Reissut {
}
package Luokat;
public class Saalis {
private static int saaliinId = 0;
private final String koko;
private final String laji;
private final int reissunTagi;
/**
* muodostin merkkijono taulukosta, tarvitaan saaliin muodostamiseen tiedostosta
* @param rivi mitä tietoja saaliin muodostamiseen tarvitaan
*/
public Saalis(String rivi) {
String[] tiedot = rivi.split("\\|");
int[] tiedotLuku = new int[tiedot.length];
for (int i = 0; i < tiedotLuku.length; i++) {
tiedotLuku[i] = Integer.parseInt(tiedot[i]);
}
LajiTulkki l = new LajiTulkki();
laji = l.getLajiFromId(tiedotLuku[1]);
KokoTulkki k = new KokoTulkki();
koko = k.getKokoFromId(tiedotLuku[2]);
reissunTagi = tiedotLuku[3];
saaliinId++;
}
/**
* muodostin suoraan arvoista
* @param koko saaliin koko
* @param laji saaliin laji
* @param reissunTagi millä reissulla saatu
*/
public Saalis(String koko, String laji, int reissunTagi) {
this.koko = koko;
this.laji = laji;
this.reissunTagi = reissunTagi;
saaliinId++;
}
/**
* Tarvittavat getterit jokanen tekee sen mitä nimi sanoo
* @return jonkin attribuuttinsa
*/
public String getKoko() {
return koko;
}
public String getLaji() {
return laji;
}
public int getReissunTagi() {
return reissunTagi;
}
public int getSaaliinId() {
return saaliinId;
}
public String tiedotTallenusMuodossa(){
LajiTulkki l = new LajiTulkki();
int lajiId = l.getIdFromLaji(laji);
KokoTulkki k = new KokoTulkki();
int kokoId = k.getIdFromKoko(koko);
return saaliinId + "|" + lajiId + "|" +kokoId + "|" + reissunTagi;
}
/*
pieni testi ohjelma
*/
public static void main(String[] args) {
String rivi = "1|1|3|1";
Saalis s = new Saalis(rivi);
System.out.println("------------Saaliin testi------------");
System.out.println("tiedot annettu muodossa " + rivi);
System.out.println(s.getKoko());
System.out.println(s.getLaji());
System.out.println(s.getReissunTagi());
System.out.println(s.getSaaliinId());
System.out.println(s.tiedotTallenusMuodossa());
}
}
package Luokat;
public class Viehe {
private final int saaliinId;
private final String tyyppi;
private final String vari;
public Viehe(int saaliinId, String tyyppi, String vari) {
this.saaliinId = saaliinId;
this.tyyppi = tyyppi;
this.vari = vari;
}
public int getSaaliinId() {
return saaliinId;
}
public String getTypyppi() {
return tyyppi;
}
public String getVari() {
return vari;
}
}
package Luokat;
import java.util.HashMap;
public class Vieheita {
private HashMap<Integer,Viehe> vieheet = new HashMap<>();
public Vieheita() {
//Tulkki t = new Tulkki("tyypit.dat");
String rivi = "1|1|sininen";
String[] arr = rivi.split("\\|");
//Viehe v = new Viehe(Integer.parseInt(arr[0]),t.getValueFromId(Integer.parseInt(arr[1])),arr[2]);
//vieheet.put(v.getSaaliinId(),v);
}
public Viehe getViehe(int id){
return vieheet.get(id);
}
}
package Luokat.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import Luokat.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.02.06 16:47:22 // Generated by ComTest
*
*/
@SuppressWarnings({ "PMD" })
public class KokoTulkkiTest {
// Generated by ComTest BEGIN
/** testGetKokoFromId21 */
@Test
public void testGetKokoFromId21() { // KokoTulkki: 21
KokoTulkki k = new KokoTulkki();
assertEquals("From: KokoTulkki line: 23", "Sintti", k.getKokoFromId(1));
assertEquals("From: KokoTulkki line: 24", "Iso", k.getKokoFromId(3));
assertEquals("From: KokoTulkki line: 25", null, k.getKokoFromId(5000));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetIdFromKoko38 */
@Test
public void testGetIdFromKoko38() { // KokoTulkki: 38
KokoTulkki k = new KokoTulkki();
assertEquals("From: KokoTulkki line: 40", 3, k.getIdFromKoko("Iso"));
assertEquals("From: KokoTulkki line: 41", 1, k.getIdFromKoko("Sintti"));
assertEquals("From: KokoTulkki line: 42", -1, k.getIdFromKoko("pöofkeof"));
} // Generated by ComTest END
}
\ No newline at end of file