Das Notes Forum

Lotus Notes / Domino Sonstiges => Tools & Downloads => Thema gestartet von: Gandhi am 28.11.02 - 13:42:49

Titel: WINZIP Bibliothek
Beitrag von: Gandhi am 28.11.02 - 13:42:49
Hi,
kennt jemand eine nichtkommerzielle dokumentierte Winzip - Programmbibliothek (Java, C++ bevorzugt)?
Titel: Re:WINZIP Bibliothek
Beitrag von: eknori am 28.11.02 - 14:07:02
ist es das, was du suchst ??

http://www.codeproject.com/cpp/zip.asp

oder suchst du eher so etwas ??

http://eknori.dyndns.org/knowledge/devidea.nsf/703257f00a483fb180256879002c0178/f28f099f53d9cf12802568e40037f9d0?OpenDocument&Highlight=0,Zip

eknori
Titel: Re:WINZIP Bibliothek
Beitrag von: Gandhi am 28.11.02 - 14:45:09
Danke! Genau das habe ich im Grunde gesucht.
Titel: Re:WINZIP Bibliothek
Beitrag von: eknori am 28.11.02 - 14:47:19
Bei "ODER" Fragen ist deine Antwort ein wenig problematisch  ??? :D ;D
Titel: Re:WINZIP Bibliothek
Beitrag von: Don Pasquale am 29.11.02 - 13:50:55

Wieso ?

Bei manchen Chefs ist es falsch, wenn Du Ihnen EINE Lösung lieferst, besser Du lieferst Ihnen Zwei ( eine Gute und eine Schlechte) und überlässt ihnen eine Entscheidung.
Schliesslich sind Chefs ja Entscheider.

Vielleicht wollte er auch entscheiden :-)

Ciao
Don Pasquale
Titel: Re:WINZIP Bibliothek
Beitrag von: eknori am 29.11.02 - 14:05:45
dann machst du irgendwas falsch !! Ich schlage auch immer mehrere Alternativen vor. Die Kunst ist selbst zu entscheiden und den Chef die Illusion zu lassen, er hätte was entschieden.  ;D ;D

eknori
Titel: Re:WINZIP Bibliothek
Beitrag von: ata am 04.12.02 - 20:12:51
... das kenne ich doch von irgendwoher.... ???  ???  ???

... bist du etwa verheiratet... ;D  ;D  ;D

ata
Titel: Noch ein Link:
Beitrag von: Christoph Arras am 12.12.02 - 21:17:44
http://www.codestore.net/A55692/store.nsf/unid/EPSD-54GNSR?OpenDocument (http://www.codestore.net/A55692/store.nsf/unid/EPSD-54GNSR?OpenDocument)
Titel: Re:WINZIP Bibliothek
Beitrag von: savage am 06.04.03 - 00:24:04
@Christoph Arras
@ all

Hi, also wir haben uns mal die Java Verison angeschaut. Scheint für R5 ganz brauchbar zu sein, aber bei R6 haben wir mit dem Viewer des Clients ein Problem.
N6 kann die durch die Java Version gezippten Files nicht lesen.

Also:
The setting for viewing file archives are stored here
; Compression/encoding formats
kvarcve.dll=kvARCVIEW   ; (required for ZIP, TAR, UUE)
206=0 133 kvhqx.dll 2   ; BinHex encoded (NOT USED BY NOTES R5)
132=zip 0 kvarcve.dll      ; ZIP archive – here is the dll wich deal ZIP archives


R5 und N6 haben hier unterschiedliche dll's. Und bei N6 funktioniert es nicht. Hat jemand eine Lösung?
Titel: Re:WINZIP Bibliothek
Beitrag von: harkpabst_meliantrop am 29.04.03 - 17:12:27
Die klassiche Antwort lautet eigentlich: Info-ZIP

http://www.info-zip.org/pub/infozip/
Titel: Zip Agent
Beitrag von: Gandhi am 18.09.03 - 17:22:42
Habe gerade mal ein wenig mit Java rumgespielt und einen Java-Agenten gewurschtelt, der alle Anhänge innerhalb der Datenbank zippt. Funktioniert bei mir unter N6, um das unter N5 zum laufen zu bringen ist eine kleine Änderung notwendig:
Statt v.get(...) ist dort elementAt(...) notwendig.
Freue mich auch über Feedback/Kritik...
Ach ja: Das ganze natürlich wie immer ohne Gewähr...

/* Jack The Zipper for Notes 6
17.9.2003
written by Marco Zehner - all rights reserved
Comments to marco.zehner@gmx.de
*/

import lotus.domino.*;
import java.util.Vector;
import java.util.Enumeration;
import java.util.zip.*;
import java.io.*;

public class JavaAgent extends AgentBase {

   public void NotesMain() {

      try {
         Session session = getSession();
         AgentContext agentContext = session.getAgentContext();

         Database db;
         db = agentContext.getCurrentDatabase();
         
         DocumentCollection col;
         Document doc;
         RichTextItem body;
         EmbeddedObject attachement, zippedAttachement;
         String attachementName;
         String zipArgs[]=new String[1];
         String ext;
         final String PATH_EXT="c:\\extracts\\";
         Zipper zippy;
         zippy=new Zipper();
         col=db.getAllDocuments();
         int i=0, c=0;
         for (i=1;i<col.getCount()+1;i++)
         {
            doc=col.getNthDocument(i);
            body=(RichTextItem) doc.getFirstItem("Body");
            if (body!=null){
               if (doc.hasEmbedded())
               {
                  Vector v = body.getEmbeddedObjects();
                  c=0;
                  for(c=0;c<v.size();c++){
                     attachement=null;
                     attachement=(EmbeddedObject) v.get(c);
                     // if you have Notes 5.x use below:
                     //attachement=(EmbeddedObject) v.elementAt(c);                     
                     
                     //Complete Zip Cycle
                     attachementName="";
                     attachementName=attachement.getSource();
                     ext=attachementName.substring(attachementName.length()-3).toLowerCase();
                     
                     if (!(ext.equals( ".gz" ))) {   
                        //Extract file
                        attachement.extractFile(PATH_EXT + attachementName);
                        
                        //ZIP attachements
                        zipArgs[0]=PATH_EXT+attachementName;
                        zippy.zipp(zipArgs);
                        System.out.println("Zipped it");
                        
                        //Append Zipped
                        body.embedObject(EmbeddedObject.EMBED_ATTACHMENT, null, PATH_EXT+attachementName+".gz",attachementName+".gz");
                        
                        //delete unzipped in document
                        attachement.remove();
                        
                        //save document
                        doc.save(true, false, true);
                     
                        //delete files
                        //Sourcefile
                        File f = new File(PATH_EXT+attachementName);
                          if (!f.exists())
                           {System.out.println("Loeschen: Datei existiert nicht: " + attachementName);}
                          else
                           { if (!f.canWrite())
                                 {System.out.println("Loeschen: schreibgeschuetzt: "+ attachementName);}
                           else
                              {f.delete();
                              System.out.println("Gelöscht: "+ attachementName);}
                        }
                        
                        //Zipped targetfile
                        File ff = new File(PATH_EXT+attachementName+".gz");
                          if (!ff.exists())
                           {System.out.println("Loeschen: Datei existiert nicht: " + attachementName);}
                          else
                           { if (!ff.canWrite())
                                 {System.out.println("Loeschen: schreibgeschuetzt: "+ attachementName);}
                           else
                              {ff.delete();
                              System.out.println("Gelöscht: "+ attachementName+".gz");}
                        }
                        
                     }
                  }
               
               }      
             }   
         }
      

      } catch(Exception e) {
         e.printStackTrace();
      }
   }
}

Dann weitere Klasse anlegen:

import java.util.zip.*;
import java.io.*;

public class Zipper {
   private static int BLOCKSIZE = 8192;

   public static void zipp(String[] args) {
      String arg=args[0];      
      if ( arg== "" ) {
      return;
      }
      try
      {
        GZIPOutputStream zipout =
         new GZIPOutputStream( new FileOutputStream(arg + ".gz") );
        byte buffer[] = new byte[BLOCKSIZE];
        FileInputStream in = new FileInputStream( arg );
        for ( int length; (length = in.read(buffer, 0, BLOCKSIZE)) != -1; )
         zipout.write( buffer, 0, length );
        in.close();
        zipout.close();}
      catch ( IOException e )
      {
        System.out.println( "Error: Couldn't compress "+arg );
      }
   }
}
Titel: Re:WINZIP Bibliothek
Beitrag von: savage am 19.09.03 - 09:35:15
Hast Du mal getestet, ob der NotesViewer diese auch entpacken kann unter N6? Unserer letzten Test mit der Zippung mit Verwendung von Javaclassen hatte leider ein schlechtes Ergebniss. Die Anhänge konnten nicht über den Notes Viewer geöffnet werden. :-(
Titel: Re:WINZIP Bibliothek
Beitrag von: Gandhi am 19.09.03 - 09:55:27
Ja, mein Notes kann die öffnen (V6)
Titel: Re:WINZIP Bibliothek
Beitrag von: Axel_Janssen am 19.09.03 - 16:35:19
Nett

2 Punkte:
1. Da ist keine einzige Recycle Methode drin.
Ohne das recyclen von Objekten führen Java-Agenen irgendwann automatisch zu Instabilitäten des Notes-Servers/des Notes-Clients. Siehe einige Diskussionen von Ralf und mir im "Java für Anfäner".  

2. Die NotesMain Methode hat zu viel Verantwortung (ist zu lang). Man müßte versuchen, daß ein bischen objekt-orientierter zu gestalten. D.h. Funktionalität auf verschiedene Methoden und Klassen zu verteilen. Kümmere mich am Wochenende drum.

Gruß Axel  
Titel: Re:WINZIP Bibliothek
Beitrag von: Gandhi am 19.09.03 - 20:27:08
Zu 1.) Eine finally Methode dranhängen?
Zu 2.) Das ist das, was mir zur Zeit noch die meisten Probleme bereitet (vor allem bei Entwicklung im Notes Client mit geringer Funktion in Richtung Java). Objektorientiert Programmieren....in Notes kommt man auch ohne ganz gut weiter. War aber ausserdem nur ein Projekt um mir ein Erfolgserlebnis zu bescheren - und das hat es getan.
Auf jeden Fall dennoch vielen Dank für die konstruktive Kritik - werde mich bessern  ;)
Titel: Re:WINZIP Bibliothek
Beitrag von: Axel_Janssen am 19.09.03 - 22:08:13
Zu 1.) Eine finally Methode dranhängen?
Ja. Das ist ein guter Ansatz.
Code
col.recycle();
db.recycle();
agentContext.recycle();
// diese Objekte müßen dann oberhalb des try blocks mit null initialisiert werden: 
AgentContext = agentContext = null;
etc.
Erstmal. Wenn du Punkt 2) beachtest wird es dann wieder ein bißchen komplizierter, weil dann die Objekte über die Methoden "verstreut" sind (schwierig auszudrücken).

Außerdem solltest du vor der schließenden Klammer von
Code
for (i=1;i<col.getCount()+1;i++)
         {
            doc=col.getNthDocument(i);

[...]
body.recycle();
doc.recycle(); // aufrufen. 
}


Zu 2.) Das ist das, was mir zur Zeit noch die meisten Probleme bereitet (vor allem bei Entwicklung im Notes Client mit geringer Funktion in Richtung Java). Objektorientiert Programmieren....in Notes kommt man auch ohne ganz gut weiter. War aber ausserdem nur ein Projekt um mir ein Erfolgserlebnis zu bescheren - und das hat es getan.
Auf jeden Fall dennoch vielen Dank für die konstruktive Kritik - werde mich bessern  ;)
Vielleicht finde ich am Wochenende Zeit, einen Vorschlag zu machen. Bin mir da auch oft unsicher. Es gibt immer viele Möglichkeiten, aber oft nur eine wirklich gute.
Titel: Re:WINZIP Bibliothek
Beitrag von: Gandhi am 19.09.03 - 23:46:29
Werde das am Montag noch mal überarbeiten...
Was heißt in dem Zusammenhang eigentlich "Instabilitäten mit dem Notesclient"? Stürzt der ab?
Und die recycle() Funktion - braucht man die nur für Notes Objekte?
Titel: Re:WINZIP Bibliothek
Beitrag von: Axel_Janssen am 20.09.03 - 00:36:00
Ich glaube wir haben den Thread gekapert. Alle weitere Diskussionen am Besten im Java für Anfänger.

Werde das am Montag noch mal überarbeiten...
Was heißt in dem Zusammenhang eigentlich "Instabilitäten mit dem Notesclient"? Stürzt der ab?
Je nachdem wo der Agent läuft, stürzt das ab. Und zwar irgendwann. Dieser Agent wird auf dem client laufen. Es geht da um eine nicht richtig aufgeräumte Umgebung.
Das sind schwer nachzuvollziehende Fehler die irgendwann auftauchen = extrem häßlich. Ich hatte das bei einem Kundenapplet vor 3 Wochen. Ralf kennt das auch gut. Die Leute sagten dann, "bei manchen Rechnern funktioniert es, bei anderen nicht ... bla bla bla". Ich wußte, was zu tun war und nachdem ich da alles korrekt recyclt wird, gibt es keine Probleme.  

Ähnliches verhalten wie bei nicht geschlossenen Connections auf Files, Databases etc. innerhalb von Java. Davor warnen immer wieder Leute mit Erfahrungen in größeren Projekten.
 
Ich habe mir Dienstag drei Viertel der Nacht um die Ohren geschlagen, um in einem Projekt die java.net Klassen durch Teile des Brazil-Frameworks zu ersetzen, da es da unter Java1.3 Instabilitäten mit nicht korrekt geschlossenen Verbindungen gibt. Eine Email meines amerikanisches hardcore Java-Programmier Orakel bestätigte mir, dass dies eine extrem gute Idee war.  

Und die recycle() Funktion - braucht man die nur für Notes Objekte?
Ja. Das gibt es nur in Notes. Es ist quasi die Einführung des Destruktors durch die Hintertür. Hat was damit zu tun, daß die Klassen für den Zugriff auf Domino auf die normalen C-Remote Procedure Calls von Domino zugreifen (man spricht auch von Wrapper Klassen). Unter bestimmten Bedingungen bringt der Java-Garbage Collector diese Objekte nicht mehr in den Ausgangszustand zurück. Das macht dann irgendwann Probleme.


Gruß Axel

<out_of_topic>
btw. habe Bundesliga-Börse Projekt gestartet.
Falls du mitmachen willst, mußt du die folgenden Dinge installieren:
- Eclipse 2.1.0
- Tomcat 4.1
- Sysdeo Tomcat Plugin 2.1 für Eclipse (http://www.sysdeo.com/eclipse/tomcatPlugin.html)
- MySQL 4.0
- MySQL Konsole 0.92
- MySQL JDBC connector 3.072
- struts 1.1
Die drängensten Infrastrukturprobleme habe ich - hoffentlich - erstmal gelöst.
</out_of_topic>
Titel: Re:WINZIP Bibliothek
Beitrag von: Gandhi am 20.09.03 - 09:52:54
Beim 4er Bob gibt es einen, der heißt Bremser.....das wäre ich dann wohl.....wenn Dich das nicht stört bin ich dabei ;)
Titel: Re:WINZIP Bibliothek
Beitrag von: Gandhi am 23.09.03 - 12:57:32
Habe folgende Versionen heruntergeladen (und verstehe jetzt auch, was Du mit dem Fluch des Upgrades meintest...):
Eclipse habe ich in V2.1.1 installiert.
mySQL habe ich in Version4.0.15 vorliegen
mySQL ControlCenter 0.93
mySQL Java Connector 3.08
struts 1.1
Sysdeo Tomcat Plugin 2.1

Sollte das Deiner Meinung nach Probleme geben können, da die Versionen ja leicht unterschiedlich sind? Wenn ja - woher bekomme ich die alten Versionen?

Ansonsten lese ich gerade das Buch von F.Esser um dann doch erst mal was zu Patterns zu lernen, bevor ich anfange mich in Sackgassen zu programmieren....
Titel: Re:WINZIP Bibliothek
Beitrag von: Axel Janssen temp am 23.09.03 - 13:42:47
Sollte das Deiner Meinung nach Probleme geben können, da die Versionen ja leicht unterschiedlich sind?
nein, glaub ich nicht, dass es da Probleme gibt.
Tomcat fehlt bei deiner Auflistung.
Kann setup info vermutlich bald abschicken (mail).
Rest am Wochenende (code, etc.).

Wer noch an der grossen Web-J2EE Herbstofensive mitmachen will,  bitte email an      
ncjansseax@hotmail.com

Gruß Axel
Titel: Re:WINZIP Bibliothek
Beitrag von: Gandhi am 23.09.03 - 13:44:43
Tomcat habe ich auch....Version4.1.27
Werde das heute abend mal installieren.
Titel: Re:WINZIP Bibliothek
Beitrag von: Axel Janssen temp am 23.09.03 - 14:33:18
3 Schritte:
1. Installroutine klicken.
2. In Umgebungsvariablen
JAVA_HOME=D:\jsdk141 (das Root von deinem jdk)
CATALINA_HOME=D:\tomcat41 (das Root von deinem Tomcat)
3. Das Startserver icon clicken (oder aus bin verzeichnis von Tomcat startserver.
4. In Browser: http://127.0.0.1:8080
5. Servlet Beispiele Testen.
6. JSP Beispiele testen.
7. admin Konsole anschauen http://127.0.0.1:8080/admin
Name:admin Passwort leer

Gruß Axel