Hello,
Im having problem in reading the contents of a file uploaded. Can you help?
Also, Im using the button cancel to cancel the uploading. There are two uploading fields. How can I differentiate between the two fields when Im clicking on it ? One is named FileUpload and the other ParentFileUpload. I want it to be ike this → If i click in the fFileUpload field, some function will be processed and if i click on ParentFileUpload field, some other functions occur. Can you help? Urgent.Below are the codes:
public class GenomeUI extends UI implements Upload.ProgressListener,Upload.FailedListener,Upload.SucceededListener, Upload.Receiver, Upload.FinishedListener{
protected Upload FileUpload, ParentFileUpload;
protected File tempFile,file;
protected Button btnOk,cancelProcessing;
protected Panel views,options;
protected String directory;
protected Long contentLength;
protected Label ProjectName;
protected HorizontalLayout processinglayout, afterprocessing;
protected Label l;
protected boolean cancelled=false;
protected VerticalLayout v;
@SuppressWarnings("deprecation")
protected ProgressBar progress;
protected AbsoluteLayout layout;
protected OptionGroup multiple;
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = GenomeUI.class)
public static class Servlet extends VaadinServlet {
}
@SuppressWarnings("deprecation")
@Override
protected void init(VaadinRequest request) {
layout = new AbsoluteLayout();
layout.setSizeFull();
setContent(layout);
ProjectName = new Label("Genome Rearrangement Problems");
layout.addComponent(ProjectName,"left:40%;right:0%;top:0%;bottom:0%");
//*************Setting Panel**************//
options = new Panel("Settings");
options.setSizeFull();
v = new VerticalLayout();
v.setSpacing(true);
//**************Uploading genome file***********//
FileUpload = new Upload("Upload genome file: ",this);
FileUpload.setReceiver(this);;
FileUpload.addListener((Upload.SucceededListener)this);
FileUpload.addListener((Upload.FailedListener)this);
FileUpload.addListener((Upload.ProgressListener)this);
FileUpload.addListener((Upload.FinishedListener) this);
//************Uploading parent file*************//
ParentFileUpload = new Upload("Upload parent file: ",this);
ParentFileUpload.setReceiver(this);
ParentFileUpload.addListener((Upload.SucceededListener)this);
ParentFileUpload.addListener((Upload.FailedListener)this);
ParentFileUpload.addListener((Upload.ProgressListener)this);
ParentFileUpload.addListener((Upload.FinishedListener) this);
//************* layout where processing will occur************//
processinglayout = new HorizontalLayout();
processinglayout.setSpacing(true);
processinglayout.setVisible(false);
//**************layout after processing occurs*************//
afterprocessing = new HorizontalLayout();
afterprocessing.setVisible(false);
//*************contains options for multiple algorithm*******//
multiple = new OptionGroup("Select algorithm/s");
multiple.setMultiSelect(true);
multiple.addItems("Insertion","Deletion","Transposition","Block Interchange");
//**************On clicking OK button process will start on panel views***************//
//Add -> if not all fields are filled
btnOk = new Button("Ok");
btnOk.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
// TODO Auto-generated method stub
Notification.show("Fill in properly");
}
});
//**********cancel the processing while uploading files*************//
//Add -> if button is clicked on file upload and parent file upload
cancelProcessing = new Button("Cancel");
cancelProcessing.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
// TODO Auto-generated method stub
cancelled=true;
FileUpload.interruptUpload();
ParentFileUpload.interruptUpload();
file.delete();
System.out.println("On pressing cancel file got deleted processing layout disappear");
processinglayout.setVisible(false);
}
});
cancelProcessing.setStyleName("small");
processinglayout.addComponent(cancelProcessing);
//***********Adding all components to the vertical layout*******//
v.addComponent(FileUpload);
v.addComponent(processinglayout);
v.addComponent(afterprocessing);
//Add-> parent parts not implemented processing layout and after processing
v.addComponent(ParentFileUpload);
v.addComponent(multiple);
v.addComponent(btnOk);
options.setContent(v);
layout.addComponent(options,"left:0%;right:0%;top:0%;bottom:0%");
//*********Progress Bar added to show processing*******//
progress =new ProgressBar();
progress.setWidth("100%");
processinglayout.addComponent(progress);
//****************View Panel************//
Panel views = new Panel("Views");
views.setSizeFull();
Label l2 = new Label("Design Mode");
views.setContent(l2);
views.setContent(l);
layout.addComponent(views,"left:40%;right:0%;top:7%;bottom:0%");
}
@Override
public void uploadSucceeded(SucceededEvent event) {
// TODO Auto-generated method stub
}
@Override
public OutputStream receiveUpload(String filename, String mimeType) {
FileOutputStream fos = null;
//FileUtils.ensureFolderExists(directory);
file = new File(directory, filename);
System.out.println(file.getName()); //checking filename
try {
fos = new FileOutputStream(file);
} catch (final java.io.FileNotFoundException e) {
throw new RuntimeException(e);
}
return fos; // Return the output stream to write to
}
@Override
public void updateProgress(long readBytes, long contentLength) {
this.contentLength=contentLength;
FileUpload.setVisible(false);
processinglayout.setVisible(true);
processinglayout.setCaption(file.getName());
progress.setEnabled(true);
progress.setValue(new Float(readBytes/(float) contentLength));
System.out.println("UPDATING PROGRESS");
}
@Override
public void uploadFinished(FinishedEvent event) {
processinglayout.setVisible(false);
afterprocessing.setVisible(true);
afterprocessing.setCaption(file.getName()+" uploaded successfully");
}
@Override
public void uploadFailed(FailedEvent event) {
try{
file.delete();
Notification.show("There was a problem uploading the file");
} catch (Exception e) {
// Silent exception. If we can't delete the file, it's not big problem. May the file did not even exist.
}
afterUploadFailed(event);
}
/** Override me to do something more than displaying the notification */
public void afterUploadFailed(FailedEvent event) {
}
public String getDirectory() {
return directory;
}
public File getFile() {
return file;
}
}