Skip to content
Snippets Groups Projects
Commit ceb42760 authored by julipits's avatar julipits
Browse files

Toimintojen koodaamisen aloittelua

parent bcc2c374
No related branches found
No related tags found
No related merge requests found
......@@ -8,5 +8,6 @@
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/ohj2"/>
<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>
package fxKohtaushallinta;
import java.util.ArrayList;
import java.util.List;
public class Avainsanat {
private String[] sanat;
private int sanoja;
/**
* Lukee
* @param koko Avainsanataulukon koko
* @param sanat avainsanat välilyönnillä eroteltuina
* @example
* <pre name="test">
* Avainsanat a = new Avainsanat(5, " Yksi Kaksi Kolme Neljä Viisi Kuusi");
* a.montaSanaa() === 5;
* a.haeIndeksista(1) === "Kaksi";
* a.haeIndeksista(4) === "Viisi";
* a = new Avainsanat(6, "Yksi Kaksi Kolme Neljä");
* a.montaSanaa() === 4;
* </pre>
*/
public Avainsanat(int koko, String sanat) {
this.sanat = new String[koko];
this.sanoja = 0;
String[] uusi = sanat.split("\\s+");
for (String s : uusi) {
if (s.length() > 0 ) {
this.sanat[this.sanoja++] = s;
if (this.sanoja == this.sanat.length) break;
}
}
}
public int montaSanaa() {
return sanoja;
}
public int getKoko() {
return this.sanat.length;
}
public String get(int indeksi) {
if (indeksi > -1 && indeksi < this.sanoja) return this.sanat[indeksi];
return "";
}
/**
* Lisää listaan avainsanat, joita siinä ei jo ole
* @param lista lista, johon lisätään
* @example
* <pre name="test">
*
* </pre>
*/
public void lisaaSanatListaan(List<String> lista) {
for (String sana : this.sanat)
if (!lista.contains(sana)) lista.add(sana);
}
/**
* Lisää sanan, jos on tilaa
* @param sana lisättävä sana
*/
public void lisaaSana(String sana) {
if (this.sanoja < this.sanat.length && haeIndeksi(sana) == -1)
this.sanat[this.sanoja++] = sana;
}
/**
* Jos sana löytyy taulukosta, poistaa sen. Siirtää taulukon viimeisen alkion poistettavan paikalle
* ja määrittää viimeisen alkion tyhjäksi. Päivittää sanojen lukumäärän.
* @param sana poistettava sana
*/
public void poistaSana(String sana) {
int i = haeIndeksi(sana);
if (i > -1) poistaSana(i);
}
/**
* Jos annetussa indeksissä on sana, poistetaan se. Siirtää taulukon viimeisen alkion poistettavan paikalle
* ja määrittää viimeisen alkion tyhjäksi. Päivittää sanojen lukumäärän.
* @param indeksi indeksi, josta poistetaan.
* @example
* <pre name="test">
* Avainsanat a = new Avainsanat(6, "Yksi Kaksi Kolme Neljä");
* a.poistaSana(0);
* a.get(0) === "Neljä";
* </pre>
*/
public void poistaSana(int indeksi) {
if (indeksi < -1 || indeksi > sanoja-1) return;
this.sanat[indeksi] = this.sanat[this.sanoja-1];
this.sanat[this.sanoja-1] = null;
this.sanoja--;
}
/**
* Hakee, mikä on sanan indeksi
* @param sana haettava sana
* @return Sanan indeksin. Jos ei löydy, -1.
*/
public int haeIndeksi(String sana) {
for (int i = 0; i < this.sanoja; i++)
if (sana.equals(this.sanat[i])) return i;
return -1;
}
public String[] getSanat() {
String[] uusi = new String[this.sanoja];
for (int i = 0; i < sanoja; i++) uusi[i] = this.sanat[i];
return uusi;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (String s : this.sanat) sb.append(" " + s);
return sb.toString();
}
}
......@@ -5,6 +5,12 @@ package fxKohtaushallinta;
* @version 20.2.2025
*
*/
public class Kohtaus extends Tietue {
public class Kohtaus extends Tietue {
private String muistiinpanot;
Kohtaus(String tiedot) {
int i = tiedot.lastIndexOf('|');
super(tiedot.substring(0, i));
this.muistiinpanot = tiedot.substring(i).strip();
}
}
......@@ -2,12 +2,80 @@ package fxKohtaushallinta;
/**
* @author Jussi Lipitsäinen
* @version 20.2.2025
* @version 28.2.2025
*
*/
public class Tietue {
private static final int MAXAVAIN = 10; //Kuinka monta avainsanaa saa olla
private int id;
private String nimi;
private String otsikko;
private String kuvaus;
private String[] avainsanat = new String[10];
}
private Avainsanat avainsanat;
public Tietue() {
//
}
/**
* Lukee merkkijonon ("id | otsikko | avainsanat | kuvaus") tiedot kenttiin
* @param tiedot tiedot sisältävä merkkijono
* @example
* <pre name="test">
* Tietue t = new Tietue("1 | Tietue 1 | avain1 avain 2 avain 3 | tämä on kuvausteksti");
* t.getOtsikko() === "Tietue 1"; *
* </pre>
*/
public Tietue(String tiedot) {
String[] palaset = tiedot.split("[|]");
this.otsikko = palaset[1].strip();
this.avainsanat = new Avainsanat(MAXAVAIN, palaset[2].strip());
this.kuvaus = palaset[3].strip();
}
/**
* Lukee merkkijonon ("id | nimi | avainsanat | kuvaus") tiedot kenttiin
* @param tiedot tiedot sisältävä merkkijono
*/
public void lueJono(String tiedot) {
//
}
public void setID(int id) {
this.id = id;
}
public void setOtsikko(String otsikko) {
this.otsikko = otsikko;
}
public void setKuvaus(String kuvaus) {
this.kuvaus = kuvaus;
}
public int getID() {
return this.id;
}
public String getOtsikko() {
return this.otsikko;
}
public String getKuvaus() {
return this.kuvaus;
}
public Avainsanat getAvainsanat() {
return this.avainsanat;
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.text.Font?>
<BorderPane prefHeight="100.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/23.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fxKohtaushallinta.UusiKohtauslistaController">
<top>
<Label text="Uusi kohtauslista" BorderPane.alignment="CENTER">
<font>
<Font size="14.0" />
</font>
<BorderPane.margin>
<Insets bottom="10.0" />
</BorderPane.margin>
</Label>
</top>
<left>
<Label prefWidth="70.0" text="Listan nimi" BorderPane.alignment="CENTER" />
</left>
<center>
<TextField fx:id="txtListanNimi" prefWidth="100.0" BorderPane.alignment="CENTER" />
</center>
<padding>
<Insets left="10.0" right="10.0" top="10.0" />
</padding>
<bottom>
<HBox alignment="CENTER" prefHeight="40.0" prefWidth="200.0" spacing="20.0" BorderPane.alignment="CENTER">
<children>
<Button fx:id="btnLuoUusi" mnemonicParsing="false" onAction="#handleUusiLista" prefWidth="100.0" text="Luo uusi lista" />
<Button fx:id="btnPeruuta" mnemonicParsing="false" onAction="#handlePeruuta" prefWidth="100.0" text="Peruuta" />
</children>
</HBox>
</bottom>
</BorderPane>
package fxKohtaushallinta;
import fi.jyu.mit.fxgui.ModalControllerInterface;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
public class UusiKohtauslistaController implements ModalControllerInterface<String> {
@FXML private Button btnLuoUusi;
@FXML private Button btnPeruuta;
@FXML private TextField txtListanNimi;
@FXML void handlePeruuta(ActionEvent event) {
}
@FXML
void handleUusiLista(ActionEvent event) {
}
//====================================
@Override
public String getResult() {
// TODO Auto-generated method stub
return null;
}
@Override
public void handleShown() {
// TODO Auto-generated method stub
}
@Override
public void setDefault(String oletus) {
// TODO Auto-generated method stub
}
}
package fxKohtaushallinta.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import fxKohtaushallinta.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.02.28 23:26:21 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class AvainsanatTest {
// Generated by ComTest BEGIN
/** testAvainsanat30 */
@Test
public void testAvainsanat30() { // Avainsanat: 30
Avainsanat a = new Avainsanat(5, " Yksi Kaksi Kolme Neljä Viisi Kuusi");
assertEquals("From: Avainsanat line: 32", 5, a.montaSanaa());
assertEquals("From: Avainsanat line: 33", "Kaksi", a.haeIndeksista(1));
assertEquals("From: Avainsanat line: 34", "Viisi", a.haeIndeksista(4));
a = new Avainsanat(6, "Yksi Kaksi Kolme Neljä");
assertEquals("From: Avainsanat line: 36", 4, a.montaSanaa());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testPoistaSana104 */
@Test
public void testPoistaSana104() { // Avainsanat: 104
Avainsanat a = new Avainsanat(6, "Yksi Kaksi Kolme Neljä");
a.poistaSana(0);
assertEquals("From: Avainsanat line: 107", "Neljä", a.get(0));
} // Generated by ComTest END
}
\ No newline at end of file
package fxKohtaushallinta.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import fxKohtaushallinta.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.01 23:28:48 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class TietueTest {
// Generated by ComTest BEGIN
/** testTietue25 */
@Test
public void testTietue25() { // Tietue: 25
Tietue t = new Tietue("1 | Tietue 1 | avain1 avain 2 avain 3 | tämä on kuvausteksti");
assertEquals("From: Tietue line: 27", "Tietue 1", t.getOtsikko());
} // Generated by ComTest END
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment