Domino 9 und frühere Versionen > ND7: Entwicklung

Attachments per JavaServlet anhängen / embedObject

<< < (3/6) > >>

AbsoluterBeginner:
Also hier ist mal der komplette Code der für die Attachments zuständig ist. Es wird schon unterschieden ob bereits einmal durchlaufen wurde. Das wird hier so realisiert, dass die Attachments noch nen Typ kriegen, PDF1-PDF4. Und je nach Typ wird dann unterschieden. Aber am besten du schaust es dir an.


--- Code: ---if(LoStrTempType.indexOf("pdf1") != -1)
                        try
                        {
                            LoStrTempFieldValue = "";
                            Blob blob = SqlResult.getBlob(LoStrTempField);
                            InputStream is2 = blob.getBinaryStream();
                            byte data[] = blob.getBytes(1L, (int)blob.length());
                            int length1 = is2.read();
                            if(length1 != -1)
                            {
                                String filename = "C:/temp/Bewerbung_" + FileName1 + "_" + FileName2 + "." + FiletypCL;
                                System.out.println(filename);
                                File f = new File(filename);
                                f.createNewFile();
                                BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(f));
                                os.write(data, 0, (int)blob.length());
                                os.flush();
                                os.close();
                                is2.close();
                                RichTextItem rtitem = LoNotesDocument.createRichTextItem("PersonFiles");
                                rtitem.embedObject(1454, "", filename, "PersonFiles");
                                rtitem.addNewLine();
                                f.delete();
                            }
                        }
                        catch(Exception oe)
                        {
                            System.out.println("Error: Insert of PDF failed:Skip");
                            LoIntOK = 0;
                        }
                    else
                    if(LoStrTempType.indexOf("pdf2") != -1)
                        try
                        {
                            LoStrTempFieldValue = "";
                            Blob blob = SqlResult.getBlob(LoStrTempField);
                            InputStream is2 = blob.getBinaryStream();
                            int length2 = is2.read();
                            if(length2 != -1)
                            {
                                byte data[] = blob.getBytes(1L, (int)blob.length());
                                String filename = "C:/temp/Lebenslauf_" + FileName1 + "_" + FileName2 + "." + FiletypCV;
                                System.out.println(filename);
                                File f = new File(filename);
                                f.createNewFile();
                                BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(f));
                                os.write(data, 0, (int)blob.length());
                                os.flush();
                                os.close();
                                is2.close();
                                if(LoNotesDocument.hasItem("PersonFiles"))
                                {
                                    RichTextItem rtitem = (RichTextItem)LoNotesDocument.getFirstItem("PersonFiles");
                                    rtitem.embedObject(1454, "", filename, "PersonFiles");
                                } else
                                {
                                    RichTextItem rtitem = LoNotesDocument.createRichTextItem("PersonFiles");
                                    rtitem.embedObject(1454, "", filename, "PersonFiles");
                                }
                                f.delete();
                            }
                        }
                        catch(Exception oe)
                        {
                            System.out.println("Error: Insert of PDF failed:Skip");
                            LoIntOK = 0;
                        }
                    else
                    if(LoStrTempType.indexOf("pdf3") != -1)
                        try
                        {
                            LoStrTempFieldValue = "";
                            Blob blob = SqlResult.getBlob(LoStrTempField);
                            InputStream is2 = blob.getBinaryStream();
                            int length2 = is2.read();
                            if(length2 != -1)
                            {
                                byte data[] = blob.getBytes(1L, (int)blob.length());
                                String filename = "C:/temp/Zeugnisse_" + FileName1 + "_" + FileName2 + "." + FiletypRef;
                                System.out.println(filename);
                                File f = new File(filename);
                                f.createNewFile();
                                BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(f));
                                os.write(data, 0, (int)blob.length());
                                os.flush();
                                os.close();
                                is2.close();
                                if(LoNotesDocument.hasItem("PersonFiles"))
                                {
                                    RichTextItem rtitem = (RichTextItem)LoNotesDocument.getFirstItem("PersonFiles");
                                    rtitem.embedObject(1454, "", filename, "PersonFiles");
                                } else
                                {
                                    RichTextItem rtitem = LoNotesDocument.createRichTextItem("PersonFiles");
                                    rtitem.embedObject(1454, "", filename, "PersonFiles");
                                }
                                f.delete();
                            }
                        }
                        catch(Exception oe)
                        {
                            System.out.println("Error: Insert of PDF failed:Skip");
                            LoIntOK = 0;
                        }
                    else
                    if(LoStrTempType.indexOf("pdf4") != -1)
                        try
                        {
                            LoStrTempFieldValue = "";
                            Blob blob = SqlResult.getBlob(LoStrTempField);
                            InputStream is2 = blob.getBinaryStream();
                            int length2 = is2.read();
                            if(length2 != -1)
                            {
                                byte data[] = blob.getBytes(1L, (int)blob.length());
                                String filename = "C:/temp/Weiteres_" + FileName1 + "_" + FileName2 + "." + FiletypMore;
                                System.out.println(filename);
                                File f = new File(filename);
                                f.createNewFile();
                                BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(f));
                                os.write(data, 0, (int)blob.length());
                                os.flush();
                                os.close();
                                is2.close();
                                if(LoNotesDocument.hasItem("PersonFiles"))
                                {
                                    RichTextItem rtitem = (RichTextItem)LoNotesDocument.getFirstItem("PersonFiles");
                                    rtitem.embedObject(1454, "", filename, "PersonFiles");
                                } else
                                {
                                    RichTextItem rtitem = LoNotesDocument.createRichTextItem("PersonFiles");
                                    rtitem.embedObject(1454, "", filename, "PersonFiles");
                                }
                                f.delete();
                            }
                        }
                        catch(Exception oe)
                        {
                            System.out.println("Error: Insert of PDF failed:Skip");
                            LoIntOK = 0;
                        } 
--- Ende Code ---

Ralf_M_Petter:
Ok, das ist natürlich schlimm. Ich würde als ersten Schritt empfehlen, die Variable rtitem auf die oberste Ebene zu ziehen und dann nur noch einmal zu belegen beim erstellen. Dann kannst du dir auch die ganzen checks sparen ob das Objet schon da ist. Ich hatte da in dem Bereich schon massive Probleme, da Notes aus mir nicht erklärlichen Gründen RichTextItems erst beim speichern so richtig wieder zugänglich macht. Weiss zwar nicht ob es hier auch von Bedeutung ist, aber ein Versuch ist der minimale Aufwand auf jeden Fall Wert.

Grüße

Ralf

AbsoluterBeginner:
Ok, das heißt, ich leg rtitem ganz oben in die Methode ? Den Check muss ich doch dann trotzdem einmal ausführen, oder ?

Wie meinst du das mit dem speichern ? Was soll ich da am betsen versuchen ?

Ralf_M_Petter:
Laut Deinem Code musst du den Check dann nicht machen, da du ihn ja beim ersten mal auch nicht machst. Ob das richtig ist oder nicht kannst du nur anhand des restlichen Codes beurteilen. Also einfach mal rtitem ganz oben definieren und erstellen. Und dann das rtitem im Code immer wieder verwenden. Der Code wird dadurch auch gleich mal ein wenig aufgeräumter.

Grüße

Ralf

AbsoluterBeginner:
Ok, vielen Dank, das werde ich gleich ausprobieren. Sollte ich zusätzlich noch irgendwas anderes ausprobieren, wegen speichern o.Ä. ?

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln