Autor Thema: WINZIP Bibliothek  (Gelesen 8923 mal)

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
WINZIP Bibliothek
« am: 28.11.02 - 13:42:49 »
Hi,
kennt jemand eine nichtkommerzielle dokumentierte Winzip - Programmbibliothek (Java, C++ bevorzugt)?
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
« Letzte Änderung: 28.11.02 - 14:08:39 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re:WINZIP Bibliothek
« Antwort #2 am: 28.11.02 - 14:45:09 »
Danke! Genau das habe ich im Grunde gesucht.
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:WINZIP Bibliothek
« Antwort #3 am: 28.11.02 - 14:47:19 »
Bei "ODER" Fragen ist deine Antwort ein wenig problematisch  ??? :D ;D
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:WINZIP Bibliothek
« Antwort #4 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

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:WINZIP Bibliothek
« Antwort #5 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
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:WINZIP Bibliothek
« Antwort #6 am: 04.12.02 - 20:12:51 »
... das kenne ich doch von irgendwoher.... ???  ???  ???

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

ata
Grüßle Toni :)

Offline Christoph Arras

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
    • ARRAS@online

Offline savage

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Dat muss kesseln!
    • Bücker GmbH - IBM Gold Partner
Re:WINZIP Bibliothek
« Antwort #8 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?
Timo Michalik von https://bueckergmbh.de/

Offline harkpabst_meliantrop

  • Senior Mitglied
  • ****
  • Beiträge: 463
  • Geschlecht: Männlich
  • I love!
    • Heute schon gelebt?
Re:WINZIP Bibliothek
« Antwort #9 am: 29.04.03 - 17:12:27 »
Die klassiche Antwort lautet eigentlich: Info-ZIP

http://www.info-zip.org/pub/infozip/

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Zip Agent
« Antwort #10 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 );
      }
   }
}
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline savage

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Dat muss kesseln!
    • Bücker GmbH - IBM Gold Partner
Re:WINZIP Bibliothek
« Antwort #11 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. :-(
Timo Michalik von https://bueckergmbh.de/

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re:WINZIP Bibliothek
« Antwort #12 am: 19.09.03 - 09:55:27 »
Ja, mein Notes kann die öffnen (V6)
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:WINZIP Bibliothek
« Antwort #13 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  
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re:WINZIP Bibliothek
« Antwort #14 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  ;)
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:WINZIP Bibliothek
« Antwort #15 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.
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re:WINZIP Bibliothek
« Antwort #16 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?
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:WINZIP Bibliothek
« Antwort #17 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>
« Letzte Änderung: 20.09.03 - 00:37:46 von Axel_Janssen »
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re:WINZIP Bibliothek
« Antwort #18 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 ;)
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re:WINZIP Bibliothek
« Antwort #19 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....
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz