public class Buch implements Serializable {
// Buchangaben mit Autor und Titel
private String autor;
private String titel;
/*------------------------------------------------------------------------*/
/** Erzeugt neues Buch
* @param autor Autor/Autoren des Buches
* @param titel Titel des Buches
*/
public Buch(String autor, String titel) {
this.autor = autor;
this.titel = titel;
}
/*------------------------------------------------------------------------*/
/** Liefert Autor des Buches */
public String getAutor() {
return autor;
}
/*------------------------------------------------------------------------*/
/** Gibt Buch als String zurück */
public String toString() {
return autor + " : " + titel;
}
}
import java.net.*;
import java.io.*;
import java.rmi.*;
import java.rmi.server.*; // wg. UnicastRemoteObject
public class Buchladen extends UnicastRemoteObject implements IBuchladen {
// maximale Anzahl der Bücher in der Buchhandlung
private final int maxAnzahlBuecher = 10;
// aktuelle Anzahl Bücher in Buchhandlung
private int anzahlBuecher;
// vorhandene Bücher (Feld, um es auch in C++ einfach machen zu können)
private Buch[] buchBestand;
/*------------------------------------------------------------------------*/
/** Konstruktor */
public Buchladen() throws RemoteException {
buchBestand = new Buch[maxAnzahlBuecher];
buchBestand[0] = new Buch("Willi Winzig", "Programmierung");
buchBestand[1] = new Buch("Hilde Hurtig", "Systemanalyse");
anzahlBuecher = 2;
System.out.println("[Buchladen] Buchladen erzeugt");
}
/*------------------------------------------------------------------------*/
/** Bücher suchen in Buchladen
* @param pattern Suchmuster
* @return Feld von Büchern
*/
public Buch[] suchenBuch(String pattern) throws RemoteException {
/* wir machen dies hier sehr einfach: das erste Buch, bei dem
der Autor übereinstimmt und nur dieses wird zurückgegeben
*/
Buch[] buecher = new Buch[1];
for(int i=0; i < anzahlBuecher; i++)
if(buchBestand[i].getAutor().equals(pattern))
{
buecher[0] = buchBestand[i];
System.out.println("[Buchladen] Buch gefunden: " + buecher[0]);
return buecher;
}
// leeres Feld zurückgeben
System.out.println("[Buchladen] Buch nicht gefunden");
return new Buch[0];
}
/*------------------------------------------------------------------------*/
/** Buch in Buchladen bestellen
* @param buch zu bestellendes Buch
*/
public void bestellenBuch(Buch[] buecher) throws RemoteException {
System.out.println("[Buchladen] Folgende Bücher wurden bestellt:");
for(int i=0; i < buecher.length; i++)
System.out.println(buecher[i]);
}
/*------------------------------------------------------------------------*/
/** Hauptprogramm */
public static void main(String[] args) {
try{
// Buchladen erzeugen
Buchladen buchladen = new Buchladen();
// Buchladen bekannt machen
Naming.rebind("Buchladen", buchladen);
} catch (Exception e){ System.out.println("Fehler auf Server:" + e); }
}
public interface IBuchladen extends Remote {
/** Bücher suchen
* @param pattern Suchmuster
* @return Feld von Büchern
*/
public Buch[] suchenBuch(String pattern) throws RemoteException;
/** Bücher bestellen
* @param buecher zu bestellende Bücher
*/
public void bestellenBuch(Buch[] buecher)throws RemoteException;
}