ubuntuusers.de

Shell Script zu Java umschreiben

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

holzhacker3000

Avatar von holzhacker3000

Anmeldungsdatum:
17. August 2012

Beiträge: 38

Wohnort: /home/max

Hi Leute,

ich habe mir ein Shell Script geschrieben, welches als Hausaufgabenheft fungiert. Dieses möchte ich durch Java und Eclipse auf mein Android Smartphone bringen. Kann mir jemand vielleicht das Script schreiben?

Hier ist der Shell Script Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#! bin/sh
# Hausaufgabenheft

echo ""
echo ""
echo "----------Hausaufgabenplaner----------"

echo "HAUSAUFGABENHEFT : eintragen, lesen oder löschen für die nächste Woche?[e/l/d] ?"
read d

if [ $d = e ]; then
  	echo "Hausaufgabe :"
 	read a
	
  	echo "In welchem Fach ?"
  	read b

  	echo "Zu wann ?"
  	read c

  	echo $c: $b: $a: >> ~/Dokumente/Scripts/Hausaufgabe 
elif [ $d = l ]; then
	echo "Suche nach Datum, Fach oder Hausaufgabe :"

	read e
	echo ""
	echo "Ergebnisse :"
	echo ""
    	grep -i "$e" ~/Dokumente/Scripts/Hausaufgabe
else
 	rm -f ~/Dokumente/Scripts/Hausaufgabe
 	touch ~/Dokumente/Scripts/Hausaufgabe
fi

echo "----------Hausaufgabenplaner----------"
echo ""
echo ""

Gruß,

max

fckawe

Avatar von fckawe

Anmeldungsdatum:
23. April 2011

Beiträge: 509

Wohnort: Freiburg im Breisgau

Hallo Max,

ich denke nicht, dass jemand einfach mal so Lust hat, das Programm für dich zu schreiben - es sei denn, derjenige sieht selbst einen Nutzen (eigener Bedarf, Übungs-Projekt) darin. Zumal du ja wahrscheinlich auf einem Android-Gerät eine GUI haben wolltest. Das lässt sich sich nicht so kurz und knapp wie das Shellskript lösen.

Es stellt sich ja sowieso die Frage nach deinem Ziel...

Möchtest du eine Verwaltung für deine Hausaufgaben haben (dann nutze doch einfach eine vorhandene App, oder wahlweise eine TODO-Liste oder einen Kalender). Oder möchtest du dabei etwas (Java und spezieller die Entwicklung für Android) lernen. Dann würdest du am besten daran tun, die Aufgabe selbst zu lösen - und bei konkreten Problemen gezielte Fragen zu stellen.

Gruß, Gerald

holzhacker3000

(Themenstarter)
Avatar von holzhacker3000

Anmeldungsdatum:
17. August 2012

Beiträge: 38

Wohnort: /home/max

Naja, das, was ich bis jetzt gemacht habe funktioniert einfach nicht. Ich habe mit dem einlesen von in Textfeldern eingegebenen Daten begonnen, doch es wird nichts eingegeben.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package HausaufgabenPlaner;

import java.applet.Applet;
import java.io.*;

import java.awt.Button;
import java.awt.Dimension;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class HausaufgabenPlaner extends Applet implements ActionListener
{
	Button eButton, lButton, dButton;
	TextField input1, input2, input3;
	String str1, str2, str3;
	Label label1, label2, label3, label4;
	{
		label1 = new Label("Hausaufgabe:");
		add(label1);
		input1 = new TextField(8);
		add(input1);
		label2 = new Label("Fach:             ");
		add(label2);
		input2 = new TextField(8);
		add(input2);
		label3 = new Label("Zu wann?       ");
		add(label3);
		input3 = new TextField(8);
		add(input3);
	    eButton = new Button("Eingabe");
		add(eButton).setPreferredSize(new Dimension(200,50));
		eButton.addActionListener(this);
		eButton.setActionCommand("Gespeichert");
		label4 = new Label("--------------------------------------------------");
		add(label4);
		lButton = new Button("Lesen");
		add(lButton).setPreferredSize(new Dimension(200, 50));
		lButton.addActionListener(this);
		dButton = new Button("Löschen");
		add(dButton).setPreferredSize(new Dimension(200, 50));
		dButton.addActionListener(this);}
		// TODO Auto-generated method stub 
		private File destination = new File("HAHeft");
		
		public void actionPerformed(ActionEvent e) 
		{ 
	        try { 
	            if (e.getActionCommand().equals("Gespeichert")) { 
	                String str1 = this.input1.getText();
	                String str2 = this.input2.getText();
	                String str3 = this.input3.getText();
	                FileWriter fw = new FileWriter(destination, true); 
	                BufferedWriter ausgabe = new BufferedWriter(fw); 
	                ausgabe.write(str3);
	                ausgabe.write(str2);
	                ausgabe.write(str1);
	                ausgabe.newLine(); 
	                ausgabe.close(); 
	            } 
	        } 
	        catch (IOException e1) 
	        {
	    }
	}
}

Ich möchte also ein Applet in folgender Form:

Label1 TextField1

Label2 TextField2

Label3 TextField3

eButton

TextField4

lButton

dButton

Dabei soll der Inhalt der Textfelder 1-3 durch Betätigung des eButton in der Datei HAHeft gespeichert werden. Doch das funktioniert nicht.

Und wie kann ich eine Zeile per Knopfdruck aus einer Datei aufrufen, die einen im Textfeld4 eingegebenen Term enthält!

Ich bitte um Hilfe!

Gruß,

max

fckawe

Avatar von fckawe

Anmeldungsdatum:
23. April 2011

Beiträge: 509

Wohnort: Freiburg im Breisgau

Hallo Max,

holzhacker3000 schrieb:

Ich habe mit dem einlesen von in Textfeldern eingegebenen Daten begonnen, doch es wird nichts eingegeben.

das habe ich noch nicht verstanden. ☹

Jedenfalls interpretiere ich deine Antwort also so, dass du Java lernen willst (bzw. zumindest die Aufgabe selbst lösen willst)... Naja, ich bin jetzt nicht so der Applet-Experte - und Android schon gar nicht - will's aber trotzdem mal probieren... ☺

Dabei soll der Inhalt der Textfelder 1-3 durch Betätigung des eButton in der Datei HAHeft gespeichert werden. Doch das funktioniert nicht.

Dein Applet funktioniert bei mir in so fern, dass es die Datei HAHeft schreibt. Anzumerken habe ich grob:

  • Die drei Werte stehen in der Datei alle samt direkt, ohne Trennzeichen, hintereinander.

  • Der Aufbau der Oberfläche sollte m.W. in einer Methode init() geschehen.

  • Exceptions sollte nicht einfach nur gefangen werden. Soll heißen: im catch sollte auch wirklich eine Fehlerbehandlung geschehen. Aber das weißt du vermutlich und hast es dir zunächst gespart. Trotzdem ist es ratsam die Fehlerbehandlung immer gleich umzusetzen.

  • Du solltest deinen Code ordentlich formatieren - vor allem, wenn du ihn anderen Leuten zum Review gibst. Aber auch, damit du selbst nicht den Über- bzw. Durchblick verlierst. In Eclipse genügt die Tastenkombination Strg+Shift+F.

  • Package-Namen beginnen i.d.R. mit Kleinbuchstaben.

In jedem Fall ist die Verwaltung der Daten in einer Datei nicht unbedingt die erste Wahl, aber für den Einstieg nicht unbedingt verkehrt. Allerdings gibt es m.W. Sicherheits-Einschränkungen für Applets, was das Schreiben von Dateien angeht. In wie fern die hier von Bedeutung sind, kann ich allerdings nicht sagen. Vielleicht wäre SQLite eine gute Alternative.

Und wie kann ich eine Zeile per Knopfdruck aus einer Datei aufrufen, die einen im Textfeld4 eingegebenen Term enthält!

Du wirst wohl alle Zeilen der Datei einlesen müssen und pro Zeile auswerten, ob dein gesuchter String enthalten ist.

Gruß, Gerald

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

hm... anderer Vorschlag:

Setz' das ganze mit Hilfe von CouchApp 🇬🇧 um. Heißt: HTML + JavaScript, Datenbank im Hintergrund ist CouchDB. CouchDB ist dabei auch gleichzeitig der Webserver. Da die Applikation nur für dich selber ist brauchst du dich auch nicht mit Authentifizierung und so rumschlagen.

Vorteile:

  • keine Notwendigkeit der GUI-Programmierung, weil HTML deine GUI bereit stellt

  • das Hausaufgabenheft kann ohne Probleme zwischen PC und Android Device abgeglichen werden (über den Replikationsmechanismus von CouchDB).

  • Du kannst ohne Emulator etc. direkt unter Linux entwickelt und das fertige Projekt einfach via Replikation auf Android übertragen - auch via WLAN oder so.

  • Keine Notwendigkeit, Java zu lernen (nur HTML + JavaScript / jQuery 😉.

CouchDB für Android heißt übrigens "Mobile Futon" (oder so ähnlich) und ist via Google Play verfügbar.

Gruß, noisefloor

holzhacker3000

(Themenstarter)
Avatar von holzhacker3000

Anmeldungsdatum:
17. August 2012

Beiträge: 38

Wohnort: /home/max

Und wie soll ich das installieren?

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

@holzhacker3000 Dein Vorgehen ist ziemlich schlecht. Fange nicht mit einer (Produktiv)-GUI an, sondern höchstens mit einem Mockup. Mindestens genauso wichtig ist es aber, sich über die benötigten Datenstrukturen und Logiken Gedanken zu machen. Aus einem GUI Mockup kann man sicherlich einiges ableiten und *zusätzlich* zum "Nachdenken" über das Problem Informationen generieren. Mehr sollte es aber auch nicht sein.

Beginne stattdessen Testcode zu schreiben; am besten nutzt Du dafür JUnit unter Java. Dann beginnst Du, basierend auf den Tests, Deine Datenstrukturen aufzubauen. Das ganze nennt sich Test Driven Development. Selbst wenn Dir das zu heftig erscheint, beginne dennoch mit Deinen Core-Datentypen - diese repräsentieren nämlich Deine spätere API über die Funktionalität. Die GUI oben drauf sollte dann eigentlich ziemlich *dumm* sein und bei (User-)Events eben nur simple API-Calls durchführen.

Zudem würde ich mir für die GUI einen guten GUI-Designer suchen; unter Java kenne ich keinen guten (kostenlosen). Ich habe da immer auf QtJambi zurückgegriffen, da ich Qt von C++ und Python her gut kannte ☺ Nach wie vor ein eleganter Ansatz, der sich in der Java Welt irgend wie nie durchgesetzt hat. Einzig WPF gefällt mir noch besser, aber das ist eine andere Geschichte... 😉

Der Vorschlag von noisefloor hat sicherlich auch etwas ☺

Antworten |