Browse Source

Merge commit '69e8e70deb0a031a55dceb118c273c68a3f8ac36' into HEAD

develop
Christian Baltzer 5 years ago
parent
commit
c464a35065
  1. 5
      pom.xml
  2. 15
      src/main/java/ugsbo/com/buchhaltung/Auswertung.java
  3. 67
      src/main/java/ugsbo/com/buchhaltung/Block.java
  4. 32
      src/main/java/ugsbo/com/buchhaltung/Blockchain.java
  5. 63
      src/test/java/com/ugsbo/Buchhaltung/Test_Blockchain.java

5
pom.xml

@ -41,6 +41,11 @@
<artifactId>javafx-fxml</artifactId>
<version>12.0.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
</dependencies>
<build>

15
src/main/java/ugsbo/com/buchhaltung/Auswertung.java

@ -0,0 +1,15 @@
package ugsbo.com.buchhaltung;
public class Auswertung {
public static void main(String[] args) {
// TODO Auto-generated method stub
Blockchain Work = new Blockchain();
Work.add(50);
Work.add(-20);
System.out.println(Work.kontostand());
System.out.print(Work.toString());
}
}

67
src/main/java/ugsbo/com/buchhaltung/Block.java

@ -0,0 +1,67 @@
package ugsbo.com.buchhaltung;
import java.security.MessageDigest;
public class Block {
int data;
int kontostand;
Block vorher;
String ownHash;
String previousHash;
//erste Block
public Block(int data) {
this.data = data;
ownHash = createNewHash(Integer.toString(data));
kontostand = this.data;
this.vorher = null;
this.previousHash = null;
}
//Alle anderen Blöcke
public Block(int data, Block vorher, String previousHash, int konto) {
this.data = data;
ownHash = createNewHash(Integer.toString(data)+previousHash);
kontostand = konto + this.data;
this.vorher = vorher;
this.previousHash = previousHash;
}
private String createNewHash(String input) {
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
//Applies sha256 to our input,
byte[] hash = digest.digest(input.getBytes("UTF-8"));
StringBuffer hexString = new StringBuffer(); // This will contain hash as hexidecimal
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(0xff & hash[i]);
if(hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}
catch(Exception e) {
throw new RuntimeException(e);
}
}
public int getKontostand() {
return kontostand;
}
public Block getVorher() {
return vorher;
}
public String getHash() {
return ownHash;
}
}

32
src/main/java/ugsbo/com/buchhaltung/Blockchain.java

@ -0,0 +1,32 @@
package ugsbo.com.buchhaltung;
import com.google.gson.*;
public class Blockchain {
Block Workingobjekt;
public Blockchain() {
Workingobjekt = new Block(0);
}
public void add(int eingabe) {
Block newWorkingobjekt = new Block(eingabe, Workingobjekt, Workingobjekt.getHash(), Workingobjekt.getKontostand());
Workingobjekt = newWorkingobjekt;
}
public int kontostand() {
return Workingobjekt.getKontostand();
}
public String toString() {
String JSON = new GsonBuilder().setPrettyPrinting().create().toJson(Workingobjekt);
return JSON;
}
}

63
src/test/java/com/ugsbo/Buchhaltung/Test_Blockchain.java

@ -0,0 +1,63 @@
package com.ugsbo.Buchhaltung;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import ugsbo.com.buchhaltung.Blockchain;
public class Test_Blockchain {
public Blockchain Workingobjekt;
@Before
public void setUp() throws Exception {
Workingobjekt = new Blockchain();
}
@Test
public void hinzufügen() {
int eingabe = 500;
int ergebnis;
Workingobjekt.add(eingabe);
ergebnis = Workingobjekt.kontostand();
assertEquals("eingabe und Ergebnis sind gleich", eingabe, ergebnis);
}
@Test
public void hinzufügenNegativ() {
int eingabe = -500;
int ergebnis;
Workingobjekt.add(eingabe);
ergebnis = Workingobjekt.kontostand();
assertEquals("eingabe und Ergebnis sind gleich", eingabe, ergebnis);
}
@Test
public void hinzufügenIstNull() {
int eingabe = 0;
int ergebnis;
Workingobjekt.add(eingabe);
ergebnis = Workingobjekt.kontostand();
assertEquals("eingabe und Ergebnis sind gleich", eingabe, ergebnis);
}
@Test
public void hinzufügenMehrAlsEinmal() {
int eingabe = 100;
int erwartet = 300;
int ergebnis;
Workingobjekt.add(eingabe);
Workingobjekt.add(eingabe);
Workingobjekt.add(eingabe);
ergebnis = Workingobjekt.kontostand();
assertEquals("eingabe und Ergebnis sind gleich", erwartet, ergebnis);
}
}
Loading…
Cancel
Save