package com.idega.block.albumcollection.presentation;
import java.util.Iterator;
import java.util.List;
import com.idega.block.albumcollection.business.AlbumCollectionBusiness;
import com.idega.block.albumcollection.data.Author;
import com.idega.block.albumcollection.data.Performer;
import com.idega.block.albumcollection.data.Track;
import com.idega.block.media.presentation.FileChooser;
import com.idega.core.file.data.ICFile;
import com.idega.data.GenericEntity;
import com.idega.idegaweb.presentation.IWAdminWindow;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.CloseButton;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.IntegerInput;
import com.idega.presentation.ui.SelectionBox;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextArea;
import com.idega.presentation.ui.TextInput;
/**
* Title: AlbumCollection
* Description:
* Copyright: Copyright (c) 2001
* Company: idega.is
* @author <a href="mailto:gummi@idega.is">Gu�mundur �g�st S�mundsson</a>
* @version 1.0
*/
public class AddTrack extends IWAdminWindow {
private Form myForm;
private HiddenInput _fieldAlbumId;
private HiddenInput _fieldTrackId;
private TextInput _fieldTrackName;
private IntegerInput _fieldTrackNumber;
private IntegerInput _fieldTrackLengthMin;
private IntegerInput _fieldTrackLengthSek;
private TextArea _fieldDescription;
private SelectionBox _fieldAuthors;
private SelectionBox _fieldPerformers;
private SelectionBox _fieldCategories;
private FileChooser _fieldAudioID;
private CheckBox _fieldAudioIsHidden;
private static String _fieldNameAlbumId = AlbumCollectionBusiness._PRM_ALBUM_ID;
private static String _fieldNameTrackId = AlbumCollectionBusiness._PRM_TRACK_ID;
private static String _fieldNameTrackName = "ac_track_name";
private static String _fieldNameTrackNumber = "ac_track_number";
private static String _fieldNameTrackLengthMin = "ac_track_length_min";
private static String _fieldNameTrackLengthSek = "ac_track_length_sek";
private static String _fieldNameDescription = "ac_track_description";
private static String _fieldNameAuthors = "ac_authors";
private static String _fieldNamePerformers = "ac_performers";
private static String _fieldNameCategories = "ac_categories";
private static String _fieldNameAudioID = "ac_audio_id";
private static String _fieldNameAudioIsHidden = "ac_audio_is_hidden";
public AddTrack() {
super();
this.setHeight(460);
this.setScrollbar(false);
this.myForm = new Form();
}
public void initFields(IWContext iwc) throws Exception{
String trId = iwc.getParameter(AlbumCollectionBusiness._PRM_TRACK_ID);
Track track = null;
if(trId != null){
//update
if(trId != null && !trId.equals("")){
this._fieldTrackId = new HiddenInput(_fieldNameTrackId,trId);
if(iwc.getParameter(AlbumCollectionBusiness._PRM_UPDATE) != null){
track = ((com.idega.block.albumcollection.data.TrackHome)com.idega.data.IDOLookup.getHomeLegacy(Track.class)).findByPrimaryKeyLegacy(Integer.parseInt(trId));
}
}
this._fieldTrackId.keepStatusOnAction();
this.myForm.add(this._fieldTrackId);
}
String albumId = iwc.getParameter(_fieldNameAlbumId);
if(albumId != null && !albumId.equals("")){
this._fieldAlbumId = new HiddenInput(_fieldNameAlbumId,albumId);
}else{
this._fieldAlbumId = new HiddenInput(_fieldNameAlbumId);
this._fieldAlbumId.setContent("");
}
this._fieldAlbumId.keepStatusOnAction();
this._fieldTrackName = new TextInput(_fieldNameTrackName);
this._fieldTrackName.setWidth("275");
this._fieldTrackName.setInFocusOnPageLoad(true);
if(track != null){
this._fieldTrackName.setContent(track.getName());
}
this._fieldTrackName.keepStatusOnAction();
this._fieldTrackNumber = new IntegerInput(_fieldNameTrackNumber);
this._fieldTrackNumber.setLength(2);
this._fieldTrackNumber.setMaxlength(2);
if(track != null){
this._fieldTrackNumber.setContent(Integer.toString(track.getNumber()));
}
int lengthMin = 0;
if(track != null){
lengthMin = track.getLength();
lengthMin=((lengthMin<0)?0:lengthMin);
}
this._fieldTrackLengthMin = new IntegerInput(_fieldNameTrackLengthMin);
this._fieldTrackLengthMin.setLength(2);
this._fieldTrackLengthMin.setMaxlength(2);
this._fieldTrackLengthMin.setContent(Integer.toString(lengthMin/60));
this._fieldTrackLengthSek = new IntegerInput(_fieldNameTrackLengthSek);
this._fieldTrackLengthSek.setLength(2);
this._fieldTrackLengthSek.setMaxlength(2);
this._fieldTrackLengthSek.setContent(Integer.toString(lengthMin%60));
this._fieldAudioID = new FileChooser(_fieldNameAudioID);
if(track != null){
ICFile audioTrack = track.getTrack();
if(audioTrack != null){
this._fieldAudioID.setSelectedFile(audioTrack);
}
}
this._fieldAudioIsHidden = new CheckBox(_fieldNameAudioIsHidden,"hide");
if(track != null){
this._fieldAudioIsHidden.setChecked(track.isAudoTrackHidden());
}
this._fieldDescription = new TextArea(_fieldNameDescription);
this._fieldDescription.setHeight(6);
this._fieldDescription.setWidth(42);
if(track != null){
this._fieldDescription.setContent(track.getDescription());
}
this._fieldDescription.keepStatusOnAction();
this._fieldAuthors = new SelectionBox(_fieldNameAuthors);
this._fieldAuthors.setHeight(6);
List authorList = AlbumCollectionBusiness.getAuthors();
if(authorList != null){
Iterator iter = authorList.iterator();
while (iter.hasNext()) {
Author item = (Author)iter.next();
this._fieldAuthors.addMenuElement(item.getID(),item.getDisplayName());
}
}
if(track != null){
int[] IDs = track.findRelatedIDs(GenericEntity.getStaticInstance(Author.class));
for (int i = 0; i < IDs.length; i++) {
this._fieldAuthors.setSelectedElement(Integer.toString(IDs[i]));
}
}
this._fieldAuthors.keepStatusOnAction();
this._fieldPerformers = new SelectionBox(_fieldNamePerformers);
this._fieldPerformers.setHeight(6);
List perfomerList = AlbumCollectionBusiness.getPerformers();
if(perfomerList != null){
Iterator iter = perfomerList.iterator();
while (iter.hasNext()) {
Performer item = (Performer)iter.next();
this._fieldPerformers.addMenuElement(item.getID(),item.getDisplayName());
}
}
if(track != null){
int[] IDs = track.findRelatedIDs(GenericEntity.getStaticInstance(Performer.class));
for (int i = 0; i < IDs.length; i++) {
this._fieldPerformers.setSelectedElement(Integer.toString(IDs[i]));
}
}
this._fieldPerformers.keepStatusOnAction();
//_fieldCategories = new SelectionBox(_fieldNameCategories);
}
public PresentationObject getElementsOredered(IWContext iwc){
Table contentTable = new Table();
//contentTable.setWidth("100%");
//contentTable.setBorder(1);
//
Table nameTable = new Table(4,4);
//nameTable.setBorder(1);
nameTable.setColumnWidth(1,"90");
nameTable.setColumnWidth(2,"50");
//nameTable.setColumnWidth(3,"70");
nameTable.setColumnWidth(4,"170");
nameTable.mergeCells(2,1,4,1);
nameTable.mergeCells(2,3,4,3);
nameTable.add(new Text("Nafn:"),1,1);
nameTable.add(this._fieldTrackName,2,1);
nameTable.add(this._fieldAlbumId,2,1);
nameTable.add(new Text("N�mer lags:"),1,2);
nameTable.add(this._fieldTrackNumber,2,2);
nameTable.add(new Text("Lengd:"),3,2);
//lenth input table
Table lTable = new Table(3,1);
lTable.setCellpadding(0);
lTable.setCellspacing(0);
lTable.add(this._fieldTrackLengthMin,1,1);
lTable.add(new Text(" : "),2,1);
lTable.add(this._fieldTrackLengthSek,2,1);
nameTable.add(lTable,4,2);
nameTable.add(new Text("Lagi�:"),1,3);
nameTable.add(this._fieldAudioID,2,3);
nameTable.add(new Text("Fela hlj��skr�:"),1,4);
nameTable.add(this._fieldAudioIsHidden,2,4);
contentTable.add(nameTable,1,1);
contentTable.setRowAlignment(1,Table.HORIZONTAL_ALIGN_CENTER);
Table t2 = new Table(2,3);
t2.setWidth("100%");
t2.add(new Text("H�fundar:"),1,1);
t2.add(this._fieldAuthors,1,2);
t2.add(new Text("Flytjendur:"),2,1);
t2.add(this._fieldPerformers,2,2);
Link addAuthor = new Link("add");
addAuthor.setWindowToOpen(CreateAuthor.class);
t2.add(addAuthor,1,3);
Link addPerformer = new Link("add");
addPerformer.setWindowToOpen(CreatePerformer.class);
t2.add(addPerformer,2,3);
contentTable.add(t2,1,2);
contentTable.setRowAlignment(2,Table.HORIZONTAL_ALIGN_CENTER);
//Description
Table descriptionTable = new Table(1,2);
descriptionTable.setWidth("100%");
//descriptionTable.setCellpadding(0);
//descriptionTable.setCellspacing(0);
//descriptionTable.setHeight(1,"32");
descriptionTable.add(new Text("Um lagi�"),1,1);
descriptionTable.add(this._fieldDescription,1,2);
contentTable.add(descriptionTable,1,3);
contentTable.setRowAlignment(3,Table.HORIZONTAL_ALIGN_CENTER);
// ButtonTable
Table bTable = new Table(2,1);
//bTable.setCellpadding(4);
bTable.add(new SubmitButton(" Save ","save","true"),1,1);
bTable.add(new CloseButton(" Close "),2,1);
contentTable.add(bTable,1,4);
contentTable.setAlignment(1,4,"right");
return contentTable;
}
public void saveTrack(IWContext iwc) throws Exception {
String acTrackId = iwc.getParameter(_fieldNameTrackId);
int trackId = -1;
if(acTrackId != null && !"".equals(acTrackId)){
trackId = Integer.parseInt(acTrackId);
}
String acAlbumId = iwc.getParameter(_fieldNameAlbumId);
String acName = iwc.getParameter(_fieldNameTrackName);
String acTrackNumber = iwc.getParameter(_fieldNameTrackNumber);
String acDescription = iwc.getParameter(_fieldNameDescription);
String acLengthMin = iwc.getParameter(_fieldNameTrackLengthMin);
String acLengthSek = iwc.getParameter(_fieldNameTrackLengthSek);
String acAudioID = iwc.getParameter(_fieldNameAudioID);
String acAudioIsHidden = iwc.getParameter(_fieldNameAudioIsHidden);
String[] acAuthors = iwc.getParameterValues(_fieldNameAuthors);
String[] acPerformers = iwc.getParameterValues(_fieldNamePerformers);
Integer TrackNumber = null;
if(acTrackNumber != null && !"".equals(acTrackNumber)){
TrackNumber = new Integer(acTrackNumber);
}
Integer AlbumId = null;
if( acAlbumId != null && !acAlbumId.equals("")){
AlbumId = new Integer(acAlbumId);
}
Integer trackLength = null;
int length = 0;
if(acLengthMin != null && !acLengthMin.equals("")){
length += (Integer.parseInt(acLengthMin)*60);
}
if(acLengthSek != null && !acLengthSek.equals("")){
length += Integer.parseInt(acLengthSek);
}
if(length != 0){
trackLength = new Integer(length);
}
Integer audioID = null;
if(acAudioID!=null&& !acAudioID.equals("")){
try{
audioID = new Integer(acAudioID);
} catch(NumberFormatException nfe){
nfe.printStackTrace();
}
}
boolean audioIsHidden = false;
if(acAudioIsHidden!=null && !acAudioIsHidden.equals("")){
audioIsHidden = true;
}
int[] authorIDs = null;
if(acAuthors != null){
authorIDs = new int[acAuthors.length];
for (int i = 0; i < acAuthors.length; i++) {
try {
authorIDs[i] = Integer.parseInt(acAuthors[i]);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
int[] performerIDs = null;
if(acPerformers != null){
performerIDs = new int[acPerformers.length];
for (int i = 0; i < acPerformers.length; i++) {
try {
performerIDs[i] = Integer.parseInt(acPerformers[i]);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
if(trackId > -1){
AlbumCollectionBusiness.updateTrack(trackId,acName,acDescription,TrackNumber,null,null,trackLength,audioID,audioIsHidden,authorIDs,performerIDs,null);
}else{
AlbumCollectionBusiness.addTrack(acName,acDescription,TrackNumber,AlbumId,null,trackLength,audioID,audioIsHidden,authorIDs,performerIDs,null);
}
}
public void main(IWContext iwc) throws Exception {
if(iwc.getParameter("save") == null){
this.myForm.empty();
initFields(iwc);
this.add(this.myForm);
//updateFieldStatus(iwc);
this.myForm.add(getElementsOredered(iwc));
} else {
this.saveTrack(iwc);
this.close();
this.setParentToReload();
}
}
}