/*
* Created on Dec 16, 2003
*
*/
package com.idega.block.text.business;
import java.rmi.RemoteException;
import java.sql.Timestamp;
import java.util.Iterator;
import java.util.List;
import javax.ejb.FinderException;
import com.idega.block.text.data.Content;
import com.idega.block.text.data.ContentHome;
import com.idega.block.text.data.LocalizedText;
import com.idega.block.text.data.LocalizedTextHome;
import com.idega.block.text.data.TxText;
import com.idega.block.text.data.TxTextHome;
import com.idega.business.IBOServiceBean;
import com.idega.core.component.data.ICObjectInstance;
import com.idega.core.component.data.ICObjectInstanceHome;
import com.idega.core.file.data.ICFile;
import com.idega.core.file.data.ICFileHome;
import com.idega.data.IDOAddRelationshipException;
import com.idega.data.IDORemoveRelationshipException;
import com.idega.util.IWTimestamp;
/**
* TextServiceBean
* @author aron
* @version 1.0
*/
public class TextServiceBean extends IBOServiceBean implements TextService{
public Content storeContent(Integer contentId, Integer localizedTextId, Integer localeId, Integer userId, Timestamp tsPublishFrom, Timestamp tsPublishTo, String sHeadline, String sBody, String sTitle, List listOfFiles) {
return storeContent(contentId, localizedTextId, localeId, userId, tsPublishFrom, tsPublishTo, sHeadline, sBody, sTitle, listOfFiles, null);
}
public Content storeContent(Integer contentId, Integer localizedTextId, Integer localeId, Integer userId, Timestamp tsPublishFrom, Timestamp tsPublishTo, String sHeadline, String sBody, String sTitle, List listOfFiles, Timestamp dateOfContent) {
javax.transaction.TransactionManager t = com.idega.transaction.IdegaTransactionManager.getInstance();
try {
t.begin();
boolean ctUpdate = false;
boolean locUpdate = false;
Content eContent = null;
LocalizedText locText = null;
if (contentId!=null && contentId.intValue() > 0) {
ctUpdate = true;
eContent = ((ContentHome) getIDOHome(Content.class)).findByPrimaryKey(contentId);
if (localizedTextId!=null && localizedTextId.intValue() > 0) {
locUpdate = true;
locText = ((LocalizedTextHome) getIDOHome(LocalizedText.class)).findByPrimaryKey(localizedTextId);
}
else {
locUpdate = false;
locText = ((LocalizedTextHome) getIDOHome(LocalizedText.class)).create();
}
}
else {
ctUpdate = false;
locUpdate = false;
eContent = ((ContentHome) getIDOHome(Content.class)).create();
if (dateOfContent == null) {
eContent.setCreated(IWTimestamp.getTimestampRightNow());
}
locText = ((LocalizedTextHome) getIDOHome(LocalizedText.class)).create();
}
locText.setHeadline(sHeadline);
locText.setBody(sBody);
locText.setLocaleId(localeId);
locText.setTitle(sTitle);
locText.setUpdated(IWTimestamp.getTimestampRightNow());
if (tsPublishFrom != null) {
eContent.setPublishFrom(tsPublishFrom);
}
if (tsPublishTo != null) {
eContent.setPublishTo(tsPublishTo);
}
if (dateOfContent == null) {
eContent.setLastUpdated(IWTimestamp.getTimestampRightNow());
}
else {
eContent.setLastUpdated(dateOfContent);
eContent.setCreated(dateOfContent);
}
if (ctUpdate) {
eContent.store();
if (locUpdate) {
locText.store();
}
else if (!locUpdate) {
locText.setCreated(IWTimestamp.getTimestampRightNow());
locText.store();
}
}
else if (!ctUpdate) {
eContent.setCreated(IWTimestamp.getTimestampRightNow());
if (userId!=null && userId.intValue() > 0) {
eContent.setUserId(userId);
}
eContent.store();
locText.setCreated(IWTimestamp.getTimestampRightNow());
locText.store();
}
t.commit();
/*try {
locText.addTo(eContent);
}catch (Exception sql) {
sql.printStackTrace(System.err);
}*/
if (ctUpdate) {
if (!locUpdate) {
locText.addTo(eContent);
}
}
else if (!ctUpdate) {
locText.addTo(eContent);
}
if (listOfFiles != null) {
Iterator I = listOfFiles.iterator();
while (I.hasNext()) {
ICFile file = (ICFile) I.next();
eContent.addFileToContent(file);
}
}
return eContent;
}
catch (Exception e) {
try {
t.rollback();
}
catch (javax.transaction.SystemException ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
return null;
}
public boolean removeContent(Integer contentId) {
javax.transaction.TransactionManager t = com.idega.transaction.IdegaTransactionManager.getInstance();
try {
t.begin();
// List O = TextFinder.listOfObjectInstanceTexts();
Content eContent = ((ContentHome) getIDOHome(Content.class)).findByPrimaryKey(contentId);
List L = ContentFinder.listOfLocalizedText(eContent);
if (L != null) {
LocalizedText lt;
for (int i = 0; i < L.size(); i++) {
lt = (LocalizedText) L.get(i);
lt.removeFrom(eContent);
lt.remove();
}
}
L = ContentFinder.listOfContentFiles(eContent);
if (L != null) {
ICFile file;
for (int i = 0; i < L.size(); i++) {
file = (ICFile) L.get(i);
eContent.removeFileFromContent(file);
//file.removeFrom(eContent);
//file.delete();
}
}
eContent.remove();
t.commit();
return true;
}
catch (Exception e) {
try {
t.rollback();
}
catch (javax.transaction.SystemException ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
return false;
}
public boolean removeFileFromContent(Integer contentId, Integer fileId) {
try {
Content content = ((ContentHome) getIDOHome(Content.class)).findByPrimaryKey(contentId);
content.removeFileFromContent(((ICFileHome) getIDOHome(ICFile.class)).findByPrimaryKey((fileId)));
return true;
}
catch (IDORemoveRelationshipException e) {
e.printStackTrace();
}
catch (RemoteException e) {
e.printStackTrace();
}
catch (FinderException e) {
e.printStackTrace();
}
return false;
}
public boolean addFileToContent(Integer contentId, Integer fileId) {
try {
Content content = ((ContentHome) getIDOHome(Content.class)).findByPrimaryKey(contentId);
content.addFileToContent(((ICFileHome)getIDOHome(ICFile.class)).findByPrimaryKey( (fileId)));
return true;
}
catch (IDOAddRelationshipException e) {
e.printStackTrace();
}
catch (RemoteException e) {
e.printStackTrace();
}
catch (FinderException e) {
e.printStackTrace();
}
return false;
}
public TxText storeText(Integer textID,Integer localizedTextID,Integer localeID,Integer userID,String headline,String title,String body){
return storeText(textID,localizedTextID,localeID,userID,null,null,null,headline,title,body,null,null);
}
public TxText storeText(Integer textId,
Integer localizedTextId,
Integer localeId ,
Integer userId,
Integer instanceId,
Timestamp tsPubFrom,
Timestamp tsPubTo,
String sHeadline,
String sTitle,
String sBody,
String sAttribute,
List listOfFiles){
try {
boolean update = false;
TxText eTxText = ((TxTextHome)getIDOHome(TxText.class)).createLegacy();
if(textId!=null && textId.intValue() > 0){
eTxText = ((TxTextHome)getIDOHome(TxText.class)).findByPrimaryKey(textId);
update = true;
}
Content eContent = storeContent(new Integer(eTxText.getContentId()),localizedTextId,localeId,userId,tsPubFrom,tsPubTo,sHeadline,sBody,sTitle,listOfFiles);
if(eContent != null){
if(sAttribute != null){
eTxText.setAttribute(sAttribute);
}
if(eContent.getID() > 0) {
eTxText.setContentId(eContent.getID());
}
if(update) {
eTxText.update();
}
else {
eTxText.insert();
}
if(instanceId!=null && instanceId.intValue() > 0 && !update){
//System.err.println("instance er til");
ICObjectInstance objIns = ((ICObjectInstanceHome)getIDOHome(ICObjectInstance.class)).findByPrimaryKey(instanceId);
//System.err.println(" object instance "+objIns.getID() + objIns.getName());
//objIns.removeFrom(new ICCategory());
eTxText.addTo(objIns);
}
return eTxText;
}
}
catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}