package elte.java2_utikalauz5.programok;
/**
JNLP API szemléltetése.

A program sorban végigteszteli a JNLP szolgáltatásokat, és csak egy példányban
futtatható. A tesztek menete a Java konzolon jelenik meg, és minden művelet
elvégzéséhez a felhasználónak engedélyt kell adnia.
@see javax.jnlp
@link.forrásfájl {@docRoot}/../data/programok/src JNLPTeszt.java
@link.letöltés {@docRoot}/../data/programok JNLPTeszt.jnlp
@since Java 2 Útikalauz programozóknak 5.0
*/
class JNLPTeszt implements javax.jnlp.SingleInstanceListener,//csak 1 példányban
java.awt.print.Printable { //nyomtatásteszthez kell
/** Konstruktor az indításfigyelés inicializálásával */
private JNLPTeszt() {
tesztSingleInstanceService(true);
}
/**
Indításfigyelő regisztrálása és törlése.
@param start Igaz értéke esetén regsztrálás, különben törlés.
*/
private void tesztSingleInstanceService(boolean start) {
System.out.println("\n********** SingleInstanceService **********");
try {
javax.jnlp.SingleInstanceService szervíz =
(javax.jnlp.SingleInstanceService)javax.jnlp.ServiceManager.lookup(
"javax.jnlp.SingleInstanceService"); //szervíz elérése
System.out.println("Megvalósítás: "+szervíz);
if (start) {
System.out.println("SingleInstanceListener regisztrálása...");
szervíz.addSingleInstanceListener(this);
} else {
System.out.println("SingleInstanceListener deregisztrálása...");
szervíz.removeSingleInstanceListener(this);
}
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/**
Indítási értesítés.
@param paraméterek Újabb példány indítási paraméterei.
*/
public void newActivation(String[] paraméterek) {
System.out.println("\n********** SingleInstanceService **********");
System.out.println("Új példány indítása történt! A paraméterek:");
for (String paraméter : paraméterek) System.out.println("\t"+paraméter);
}
/** Tesztfájl neve */
private static final String TESZTFÁJL = "JNLPTeszt.tesztfile";
/** Alkalmazás gyökér URL-je */
private static java.net.URL gyökérURL;
/** BasicService szolgáltatás tesztje */
private static void tesztBasicService() {
System.out.println("\n********** BasicService **********");
try { //szervíz elérése
javax.jnlp.BasicService szervíz = (javax.jnlp.BasicService)
javax.jnlp.ServiceManager.lookup("javax.jnlp.BasicService");
System.out.println("Megvalósítás: "+szervíz);
gyökérURL = szervíz.getCodeBase(); //gyökér URL eltárolása
System.out.println("Gyökér URL: "+gyökérURL);
System.out.println("Böngésző támogatott-e: "+
szervíz.isWebBrowserSupported());
System.out.println("Gyökér URL megjelenítés sikerült-e: "+
szervíz.showDocument(gyökérURL)); //böngésző indítása
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/** FileOpenService szolgáltatás tesztje */
private static void tesztFileOpenService() {
System.out.println("\n********** FileOpenService **********");
try { //szervíz elérése
javax.jnlp.FileOpenService szervíz= (javax.jnlp.FileOpenService)
javax.jnlp.ServiceManager.lookup("javax.jnlp.FileOpenService");
System.out.println("Megvalósítás: "+szervíz);
javax.jnlp.FileContents fájl=szervíz.openFileDialog(null, null);
System.out.println("Megnyitott fájl: "+(fájl==null ? fájl : (
fájl.getName()+", mérete: "+fájl.getLength())));
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/** FileSaveService szolgáltatás tesztje */
private static void tesztFileSaveService() {
System.out.println("\n********** FileSaveService **********");
try { //szervíz elérése
javax.jnlp.FileSaveService szervíz= (javax.jnlp.FileSaveService)
javax.jnlp.ServiceManager.lookup("javax.jnlp.FileSaveService");
System.out.println("Megvalósítás: "+szervíz);
javax.jnlp.FileContents fájl=szervíz.saveFileDialog(null, null,
new java.io.ByteArrayInputStream(TESZTFÁJL.getBytes()),
TESZTFÁJL); //tesztfájl írása
System.out.println("Lementett fájl: "+(fájl==null ? fájl : (
fájl.getName()+", mérete: "+fájl.getLength())));
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/** ExtendedService szolgáltatás tesztje */
private static void tesztExtendedService() {
System.out.println("\n********** ExtendedService **********");
try { //szervíz elérése
javax.jnlp.ExtendedService szervíz= (javax.jnlp.ExtendedService)
javax.jnlp.ServiceManager.lookup("javax.jnlp.ExtendedService");
System.out.println("Megvalósítás: "+szervíz);
System.out.println("Közvetlen fájlmegnyitás...");
javax.jnlp.FileContents fájl=szervíz.openFile(new java.io.File(
TESZTFÁJL)); //tesztfájl megnyitása
System.out.println("Megnyitott fájl: "+(fájl==null ? fájl : (
fájl.getName()+", mérete: "+fájl.getLength())));
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/** PersistenceService szolgáltatás tesztje */
private static void tesztPersistenceService() {
System.out.println("\n********** PersistenceService **********");
try {
javax.jnlp.PersistenceService szervíz = //szervíz elérése
(javax.jnlp.PersistenceService)javax.jnlp.ServiceManager.lookup(
"javax.jnlp.PersistenceService");
System.out.println("Megvalósítás: "+szervíz);
System.out.println("Muffin lekérdezése...");
javax.jnlp.FileContents fájl=null;
try {
fájl=szervíz.get(gyökérURL);
} catch (java.io.FileNotFoundException fnfe) {} //még nincs megadva
if (fájl==null) {
System.out.println("Muffin létrehozása...");
System.out.println("Max adatméret: "+
szervíz.create(gyökérURL, 1024));
szervíz.setTag(gyökérURL, //nincs szerveroldali szinkronizálás
javax.jnlp.PersistenceService.TEMPORARY);
fájl=szervíz.get(gyökérURL);
} else {
System.out.println("Muffin olvasása...");
java.io.ObjectInputStream adat=new java.io.ObjectInputStream(
fájl.getInputStream());
System.out.println("Muffin tartalma: "+adat.readObject());
adat.close();
}
System.out.println("Muffin írása...");
java.io.ObjectOutputStream adat=new java.io.ObjectOutputStream(
fájl.getOutputStream(true)); //aktuális dátummal felülírás
adat.writeObject(new java.util.Date());
adat.close();
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/** DownloadService szolgáltatás tesztje */
private static void tesztDownloadService() {
System.out.println("\n********** DownloadService **********");
try { //szervíz elérése
javax.jnlp.DownloadService szervíz= (javax.jnlp.DownloadService)
javax.jnlp.ServiceManager.lookup("javax.jnlp.DownloadService");
System.out.println("Megvalósítás: "+szervíz);
if (szervíz.isPartCached("main")) {
System.out.println("A main letöltési csoport törlése..." );
szervíz.removePart("main");
} else System.out.println(
"A main letöltési csoport nem érhető el lokálisan.");
System.out.println("A main letöltési csoport letöltése...");
szervíz.loadPart("main", szervíz.getDefaultProgressWindow());
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/** ClipboardService szolgáltatás tesztje */
private static void tesztClipboardService() {
System.out.println("\n********** ClipboardService **********");
try { //szervíz elérése
javax.jnlp.ClipboardService szervíz= (javax.jnlp.ClipboardService)
javax.jnlp.ServiceManager.lookup("javax.jnlp.ClipboardService");
System.out.println("Megvalósítás: "+szervíz);
System.out.println("Vágólap kiolvasása...");
java.awt.datatransfer.Transferable tartalom = szervíz.getContents();
Object adat = tartalom;
if (tartalom!=null&&tartalom.isDataFlavorSupported( //szövegtartalom
java.awt.datatransfer.DataFlavor.stringFlavor)) adat = tartalom.
getTransferData(java.awt.datatransfer.DataFlavor.stringFlavor);
System.out.println("Tartalom: "+adat);
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/** PrintService szolgáltatás tesztje */
private static void tesztPrintService(java.awt.print.Printable oldal) {
System.out.println("\n********** PrintService **********");
try { //szervíz elérése
javax.jnlp.PrintService szervíz= (javax.jnlp.PrintService)
javax.jnlp.ServiceManager.lookup("javax.jnlp.PrintService");
System.out.println("Megvalósítás: "+szervíz);
System.out.println("Oldalformátum beállítása...");
szervíz.showPageFormatDialog(szervíz.getDefaultPage());
System.out.println("1 oldal nyomtatása...");
szervíz.print(oldal);
} catch (Exception e) { //helyi hibakezelés
e.printStackTrace();
}
}
/**
Nyomtatás elvégzése.
@param g A nyomtatandó oldal grafikus felülete
@param oldalforma A nyomtatható oldal formátuma
@param oldal A nyomtatandó oldal sorszáma
@return Oldal nyomtatása mehet, vagy nincs több oldal.
*/
public int print(java.awt.Graphics g, java.awt.print.PageFormat oldalforma,
int oldal) throws java.awt.print.PrinterException {
if (oldal==0) { //egyetlen oldal felépítése
System.out.println("Nyomtatás folyamatban...");
g.drawString("JNLPTeszt tesztPrintService", (int)oldalforma.
getImageableX()+10, (int)oldalforma.getImageableY()+10);
return java.awt.print.Printable.PAGE_EXISTS; //mehet az oldal
}
System.out.println("Nyomtatás kész.");
return java.awt.print.Printable.NO_SUCH_PAGE; //nincs több oldal
}
/**
A tesztprogram indítása.
@param argumentumok Az indításkor megadott paraméterek.
*/
public static void main(String argumentumok[]) {
JNLPTeszt teszt = new JNLPTeszt(); //példányosítás
try {
System.out.println("\n------ A biztosított szolgáltatások: ------");
for (String szervíznév:javax.jnlp.ServiceManager.getServiceNames())
System.out.println("\t"+szervíznév);
tesztBasicService(); //tesztek elvégzése
tesztFileOpenService();
tesztFileSaveService();
tesztExtendedService();
tesztPersistenceService();
tesztDownloadService();
tesztClipboardService();
tesztPrintService(teszt);
System.out.println("\n--- tesztelés vége, 1 perc múlva kilépés...");
Thread.sleep(1000*60); //1 perc várakozás
} catch (Exception e) {
e.printStackTrace();
} finally {
teszt.tesztSingleInstanceService(false); //indításfigyelő törlése
System.exit(0); //majd a program befejezése
}
}
}