Spring Fileverwaltung in Datenbank oder Logfile?

eclipseworker

Bekanntes Mitglied
Ich habe eine Springablikation, die auch Dateien hochladen können soll. Dazu habe ich mir gedacht verwaltet ich die Files in einer eignen Enität, aber irgendwie speichern die nicht richtig in die Datenbank.

Der Relevante Code ist glaube:
Java:
package at.qe.sepm.skeleton.model;

import javax.persistence.Entity;

/**
 * Users can upload files to use in Questions and or answers.
 * @author eclipseworker
 */

import org.springframework.data.domain.Persistable;

import java.util.Date;
import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity(name="UserFile")
public class UserFile implements Persistable<Long>  {


    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "userFileId", updatable = false, nullable = false)
    private Long id;
    
    @ManyToOne
        @JoinColumn
       private User owner;
    
    private String fileName;
    
    
    
    @Column(nullable = false)
    private String path;
    
    //...
    
}
Im User ist es ähnlich:
Java:
    @OneToMany(cascade = {CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH}, mappedBy = "owner")
    @LazyCollection(LazyCollectionOption.FALSE)
    private List<UserFile> files;

Die Uploadmethode sollte das USerfile auch speichern:

Java:
public void upload() throws Exception {
        //System.err.println("Starting upload.");
        
        if(file != null) {
            String filename = FilenameUtils.getName(file.getFileName());
            File dircetory = new File(path);
            if(!dircetory.isDirectory()) {
                dircetory.mkdir();
            }
            File outFile=new File(dircetory, filename);
            boolean outFileExists=outFile.exists();
            if(outFileExists && !overwrite) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "File exists!", file.getFileName() + " already exist. Rename it or overwrite it.");
                FacesContext.getCurrentInstance().addMessage(null, message);
            }else {
                try (
                    InputStream input = file.getInputstream();
                    OutputStream output = new FileOutputStream(outFile);
                ){
                    IOUtils.copy(input, output);
                }
                UserFile userFile;
                Timestamp now=new Timestamp(System.currentTimeMillis());
                if(outFileExists) {
                    Collection <UserFile> ufl=userFileService.findByFileNameAndOwner(outFile.getName(), owner);
                    userFile=ufl.iterator().next();
                }else {
                    userFile=new UserFile();
                    userFile.setOwner(owner);
                    userFile.setFileName(outFile.getName());
                    userFile.setSize(file.getSize());
                    userFile.setIntern(true);
                    userFile.setPath(path);
                    userFile.setUploadTime(now);
                }
                userFile.setLastUpdated(now);
                userFile.setVisible(visible);
                userFileService.saveUserFile(userFile);
                FacesMessage message = new FacesMessage("Succesful!", file.getFileName() + " is uploaded.");
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
        }else {
            FacesMessage message = new FacesMessage("File null!!");
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }
Der Fileservice über gibt nur alles an die Respotrory die so wie sie ist stimmt.
Aber trotzdem wird das UserFile nicht gespeichert. Oder zumindest im FileTable nicht angezeigt:
HTML:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition xmlns="http://www.w3c.org/1999/xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:pe="http://primefaces.org/ui/extensions"
                template="/WEB-INF/templates/main.xhtml">
    <ui:define name ="content">

        <h:form id="fileForm">
              
              
          
              
               <p:button href="fileupload.xhtml" value="Create File" />
              
              <p:dataTable id="userFileTable" var="file" value="#{userFileController.findAllMyFiles}" style="width:1200px;" emptyMessage="No files found.">
                  <f:facet name="header">
                    My files
                </f:facet>
                  
                <p:column headerText="File Name" filterBy="#{file.fileName}" filterMatchMode="contains" style="text-align:center;">
                     <h:outputText value="#{file.fileName}"/>
                </p:column>
                <p:column headerText="Owner" filterBy="#{file.owner.username}" filterMatchMode="contains" style="text-align:center;">
                     <h:outputText value="#{file.owner.username}"/>
                </p:column>
                <p:column headerText="Path" filterBy="#{file.path}" filterMatchMode="contains" style="text-align:center;">
                    <h:outputText value="#{file.path}"/>
                </p:column>
                <p:column headerText="Upload Time" filterBy="#{file.uploadTime}" filterMatchMode="contains" style="text-align:center;">
                             <h:outputText value="#{file.uploadTime}"/>
                 </p:column>
                <p:column headerText="Last Updated" filterBy="#{file.lastUpdated}" filterMatchMode="contains" style="text-align:center;">
                    <h:outputText value="#{file.lastUpdated}"/>
                 </p:column>
                <p:column headerText="Size" filterBy="#{file.size}" filterMatchMode="contains" style="text-align:center;">
                             <h:outputText value="#{file.size}"/>
                  </p:column>
                
                <p:column headerText="Visible" filterBy="#{file.visible}" filterMatchMode="contains" style="text-align:center;">
                             <p:selectBooleanCheckbox  disabled="true" value="#{file.visible}"/>
                </p:column>
                <p:column headerText="Intern" filterBy="#{file.intern}" filterMatchMode="contains" style="text-align:center;">
                             <p:selectBooleanCheckbox  disabled="true" value="#{file.intern}"/>
                </p:column>
                
                
                <p:column style="text-align:center" exportable="false">
                    <p:commandButton oncomplete="PF('editFileDialog').show()" icon="fa fa-pencil" update=":userFileTable:editFileDialog" title="Edit File (Link to new version)" >
                        <f:setPropertyActionListener  value="#{file}" target="#{userFileController.file}"/>
                    </p:commandButton>
                    <p:commandButton action="#{userFileController.doDeleteFile()}" icon="fa fa-trash" title="Delete" update=":userForm:notesTable">
                        <f:setPropertyActionListener value="#{file}" target="#{userFileController.note}" />
                        <p:confirm header="Confirmation" message="Do you really want to delete this file?" icon="ui-icon-alert" />
                    </p:commandButton>
                </p:column>
              
              </p:dataTable>
              
              
              <p:contextMenu for="userFileTable" widgetVar="userFileTable">   
               <p:menuitem value="Edit Cell" icon="ui-icon-search" /> 
               <p:menuitem value="Hide Menu" icon="ui-icon-close" /> 
           </p:contextMenu>
              
              
              <p:confirmDialog global="true" showEffect="fade" hideEffect="fade" width="300">
                <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
                <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
            </p:confirmDialog>
            
              <p:dialog id="editFileDialog" widgetVar="editFileDialog" header="Edit File" resizable="false" modal="true" showEffect="fade" hideEffect="fade" >
                
                <p:column headerText="FileName" filterBy="#{file.fileName}" filterMatchMode="contains" style="text-align:center;">
                     <p:inputText value="#{file.fileName}"/>
                </p:column>
                
                <p:column id="path"  headerText="Path" filterBy="#{file.path}" filterMatchMode="contains" style="text-align:center;">
                    <p:inputText value="#{file.path}"/>
                </p:column>
                <p:selectBooleanButton id="replacementStrategy" value="#{userFileController.replacePerUpload}" onLabel="Replace per upload" offLabel="Replace per link" style="width:60px" />

                <p:column headerText="Visible" filterBy="#{file.visible}" filterMatchMode="contains" style="text-align:center;">
                             <p:selectBooleanCheckbox value="#{file.visible}"/>
                </p:column>
                <h:panelGrid columns="2">
                        <p:commandButton value="Save" icon="fa fa-check" action="#{userFileController.updateFile()}" update="userFileTable" oncomplete="PF('editNoteDialog').hide()"/>
                        <p:commandButton value="Cancel" onclick="PF('editNoteDialog').hide()"/>
                    </h:panelGrid>
                
            </p:dialog>
              
        </h:form>
        
    </ui:define>
</ui:composition>
Da frage ich mich doch was da falsch ist.
Falls diese Codestücke zu ungenau sind siehe Anhang.

Eine Alternative die ich mir überlegt habe wäre einfach ein Logfile anzulegen für jeden User. Was kann ich da tun?
 

Anhänge

  • fileUpload_jf.zip
    13,1 KB · Aufrufe: 3
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Newsletter versenden - Datenbank Design Allgemeines EE 0
L JavaEE Webanwendung - Datenbank-Verbindung aufbauen Allgemeines EE 18
D JSON abspeichern mit gleichen Datenbank Eintrag Allgemeines EE 3
P JSF Wohin kommt die .db Datei der Datenbank? Allgemeines EE 2
B Integrierte Datenbank in Wildfly Server Allgemeines EE 2
B Datenbank Resource wird nicht gefunden Allgemeines EE 1
J JSTree in Web-App: Datenbank-Beziehungen verschwinden nach unbestimmter Zeit Allgemeines EE 4
J JSF Glassfish jdbcRelam und Oracle-Datenbank - WEB9102: Web Login Failed Allgemeines EE 0
C JSF Bestimmte Daten aus der Datenbank anzeigen lassen Allgemeines EE 13
T Strings - Partieller Abgleich mit Datenbank Allgemeines EE 4
D GWT mit Hibernate und Sql Datenbank Allgemeines EE 2
I JSF Userbild in die Datenbank machen? Allgemeines EE 6
R Je nach Benutzer anderes Datenbank-Schema auswählen Allgemeines EE 4
A Anfängerfrage: daten in datenbank speichern Allgemeines EE 8
W Daten mit j2ee aus datenbank abfragen Allgemeines EE 8
J XML vs. Datenbank vs. lokale Ordnerstruktur Allgemeines EE 6
J ejb3.0 datenbank problem Allgemeines EE 2
remus JBoss Authentifizierung mit MYSQL-Datenbank Allgemeines EE 4
H Eine Datenbank - 1 Datenmodell - 2 Anwendungsumgebungen Allgemeines EE 2
E JBoss Hibernate Datenbank-Timeout Allgemeines EE 3
T Wie Datenbank und Servlet koppeln? Allgemeines EE 3
G Entity Bean ignoriert Datenbank Allgemeines EE 16
N Warenkorb ohne Datenbank Allgemeines EE 2
M Servlet (Bilder aus Datenbank liefern) läuft nur einige Zeit Allgemeines EE 12
S String escpapen für JavaScript, Datenbank, HTML Allgemeines EE 2
F Datenbank und JSF Allgemeines EE 2
P struts "beliebige motive in der datenbank finden" Allgemeines EE 6
T XML, Beans, Datenbank. Kann mir jemand helfen? Allgemeines EE 5
K [Tomcat 5.5.12+Axis] Datenbank Zugriff Allgemeines EE 2
T Bildfolge in Datenbank Allgemeines EE 2
P EJB3-Standard und dafür geeignetste SQL-Datenbank Allgemeines EE 21
A Tabstopp-getrennte Daten üb. Webformular in Datenbank laden! Allgemeines EE 2
H Datenbank Abfragen mit EJB Allgemeines EE 9

Ähnliche Java Themen

Neue Themen


Oben