package com.idega.block.staff.business;
import java.rmi.RemoteException;
import java.sql.SQLException;
import javax.transaction.TransactionManager;
import com.idega.block.staff.data.StaffEntity;
import com.idega.block.staff.data.StaffInfo;
import com.idega.block.staff.data.StaffLocalized;
import com.idega.block.staff.data.StaffMeta;
import com.idega.block.staff.data.StaffMetaData;
import com.idega.block.staff.data.StaffMetaDataBMPBean;
import com.idega.core.user.business.UserBusiness;
import com.idega.core.user.business.UserGroupBusiness;
import com.idega.data.GenericEntity;
import com.idega.transaction.IdegaTransactionManager;
import com.idega.util.IWTimestamp;
/**
* Title: User
* Copyright: Copyright (c) 2000 idega.is All Rights Reserved
* Company: idega margmi�lun
* @author
* @version 1.0
*/
public class StaffBusiness {
public static final String PARAMETER_MODE = "mode";
public static final String PARAMETER_SAVE = "save";
public static final String PARAMETER_UPDATE = "update";
public static final String PARAMETER_DELETE = "delete";
public static final String PARAMETER_CLOSE = "close";
public static final String PARAMETER_LOCALE_DROP = "locale_drop";
public static final String PARAMETER_LETTER = "letter";
public static final String PARAMETER_USER_ID = "user_id";
public static final String PARAMETER_TITLE = "title";
public static final String PARAMETER_EDUCATION = "education";
public static final String PARAMETER_AREA = "area";
public static final String PARAMETER_BEGAN_WORK = "began_work";
public static final String PARAMETER_IMAGE_ID = "image_id";
public static final String PARAMETER_META_VALUE = "value";
public static final String PARAMETER_META_ATTRIBUTE = "attribute";
public static void updateStaff(int user_id, String title, String education, String school, String area, IWTimestamp began_work) throws RemoteException{
StaffInfo staffToAdd = null;
try {
staffToAdd = ((com.idega.block.staff.data.StaffInfoHome)com.idega.data.IDOLookup.getHomeLegacy(StaffInfo.class)).findByPrimaryKeyLegacy(user_id);
}
catch (SQLException e) {
staffToAdd = ((com.idega.block.staff.data.StaffInfoHome)com.idega.data.IDOLookup.getHomeLegacy(StaffInfo.class)).createLegacy();
staffToAdd.setID(user_id);
}
if(title != null){
staffToAdd.setTitle(title);
}
if(education != null){
staffToAdd.setEducation(education);
}
if(school != null){
staffToAdd.setSchool(school);
}
if(area != null){
staffToAdd.setArea(area);
}
if(began_work != null){
staffToAdd.setBeganWork(began_work.getSQLDate());
}
// if(!update){
//
// staffToAdd.setImageID(-1);
//
// }
staffToAdd.store();
}
public static void saveStaff(int localeID, int userID, String title, String education, String area, IWTimestamp began_work, String imageID) {
StaffEntity staffToAdd = null;
boolean update = false;
int staffImageID = -1;
try {
staffImageID = Integer.parseInt(imageID);
}
catch (NumberFormatException ne) {
staffImageID = -1;
}
try {
staffToAdd = ((com.idega.block.staff.data.StaffEntityHome)com.idega.data.IDOLookup.getHomeLegacy(StaffEntity.class)).findByPrimaryKeyLegacy(userID);
update = true;
}
catch (SQLException e) {
staffToAdd = ((com.idega.block.staff.data.StaffEntityHome)com.idega.data.IDOLookup.getHomeLegacy(StaffEntity.class)).createLegacy();
staffToAdd.setID(userID);
update = false;
}
if(began_work != null){
staffToAdd.setBeganWork(began_work.getSQLDate());
}
if(staffImageID != -1){
staffToAdd.setImageID(Integer.parseInt(imageID));
}
if ( update ) {
try {
staffToAdd.update();
}
catch (SQLException e) {
e.printStackTrace(System.err);
}
}
else {
try {
staffToAdd.insert();
}
catch (SQLException e) {
e.printStackTrace(System.err);
}
}
StaffLocalized locText = StaffFinder.getLocalizedStaff(staffToAdd,localeID);
boolean newLocText = false;
if ( locText == null ) {
locText = ((com.idega.block.staff.data.StaffLocalizedHome)com.idega.data.IDOLookup.getHomeLegacy(StaffLocalized.class)).createLegacy();
newLocText = true;
}
if(title != null){
locText.setTitle(title);
}
if(education != null){
locText.setEducation(education);
}
if(area != null){
locText.setArea(area);
}
if ( newLocText ) {
locText.setLocaleId(localeID);
try {
locText.insert();
locText.addTo(staffToAdd);
}
catch (SQLException e) {
e.printStackTrace(System.err);
}
}
else {
try {
locText.update();
}
catch (SQLException e) {
e.printStackTrace(System.err);
}
}
}
public static void updateImage(int userId,String imageId) {
StaffInfo staffToAdd = null;
boolean update = false;
try {
staffToAdd = ((com.idega.block.staff.data.StaffInfoHome)com.idega.data.IDOLookup.getHomeLegacy(StaffInfo.class)).findByPrimaryKeyLegacy(userId);
update = true;
}
catch (SQLException e) {
staffToAdd = ((com.idega.block.staff.data.StaffInfoHome)com.idega.data.IDOLookup.getHomeLegacy(StaffInfo.class)).createLegacy();
staffToAdd.setID(userId);
update = false;
}
if ( imageId != null ) {
try {
staffToAdd.setImageID(Integer.parseInt(imageId));
}
catch (NumberFormatException ex) {
staffToAdd.setImageID(-1);
}
}
try {
if ( update ) {
staffToAdd.update();
}
else {
staffToAdd.insert();
}
}
catch (SQLException ex) {
ex.printStackTrace(System.err);
}
}
public static void saveImage(int userId,String imageId) {
StaffEntity staffToAdd = null;
boolean update = false;
try {
staffToAdd = ((com.idega.block.staff.data.StaffEntityHome)com.idega.data.IDOLookup.getHomeLegacy(StaffEntity.class)).findByPrimaryKeyLegacy(userId);
update = true;
}
catch (SQLException e) {
staffToAdd = ((com.idega.block.staff.data.StaffEntityHome)com.idega.data.IDOLookup.getHomeLegacy(StaffEntity.class)).createLegacy();
staffToAdd.setID(userId);
update = false;
}
if ( imageId != null ) {
try {
staffToAdd.setImageID(Integer.parseInt(imageId));
}
catch (NumberFormatException ex) {
staffToAdd.setImageID(-1);
}
}
try {
if ( update ) {
staffToAdd.update();
}
else {
staffToAdd.insert();
}
}
catch (SQLException ex) {
ex.printStackTrace(System.err);
}
}
public static void updateMetaData(int userID,String a1,String v1,String a2,String v2,String a3,String v3,String a4,String v4,String a5,String v5,String a6,String v6) {
try {
com.idega.block.staff.data.StaffMetaDataBMPBean.getStaticInstance().deleteMultiple(com.idega.block.staff.data.StaffMetaDataBMPBean.getColumnNameUserID(),Integer.toString(userID));
}
catch (SQLException e) {
e.printStackTrace(System.err);
}
TransactionManager t = IdegaTransactionManager.getInstance();
StaffMetaData meta = null;
try {
t.begin();
if ( a1 != null && a1.length() > 0 ) {
meta = ((com.idega.block.staff.data.StaffMetaDataHome)com.idega.data.IDOLookup.getHomeLegacy(StaffMetaData.class)).createLegacy();
meta.setUserID(userID);
meta.setAttribute(a1);
if ( v1 != null ) {
meta.setValue(v1);
}
meta.insert();
}
if ( a2 != null && a2.length() > 0 ) {
meta = ((com.idega.block.staff.data.StaffMetaDataHome)com.idega.data.IDOLookup.getHomeLegacy(StaffMetaData.class)).createLegacy();
meta.setUserID(userID);
meta.setAttribute(a2);
if ( v2 != null ) {
meta.setValue(v2);
}
meta.insert();
}
if ( a3 != null && a3.length() > 0 ) {
meta = ((com.idega.block.staff.data.StaffMetaDataHome)com.idega.data.IDOLookup.getHomeLegacy(StaffMetaData.class)).createLegacy();
meta.setUserID(userID);
meta.setAttribute(a3);
if ( v3 != null ) {
meta.setValue(v3);
}
meta.insert();
}
if ( a4 != null && a4.length() > 0 ) {
meta = ((com.idega.block.staff.data.StaffMetaDataHome)com.idega.data.IDOLookup.getHomeLegacy(StaffMetaData.class)).createLegacy();
meta.setUserID(userID);
meta.setAttribute(a4);
if ( v4 != null ) {
meta.setValue(v4);
}
meta.insert();
}
if ( a5 != null && a5.length() > 0 ) {
meta = ((com.idega.block.staff.data.StaffMetaDataHome)com.idega.data.IDOLookup.getHomeLegacy(StaffMetaData.class)).createLegacy();
meta.setUserID(userID);
meta.setAttribute(a5);
if ( v5 != null ) {
meta.setValue(v5);
}
meta.insert();
}
if ( a6 != null && a6.length() > 0 ) {
meta = ((com.idega.block.staff.data.StaffMetaDataHome)com.idega.data.IDOLookup.getHomeLegacy(StaffMetaData.class)).createLegacy();
meta.setUserID(userID);
meta.setAttribute(a6);
if ( v6 != null ) {
meta.setValue(v6);
}
meta.insert();
}
t.commit();
} catch (Exception e) {
e.printStackTrace(System.err);
try {
t.rollback();
} catch (Exception e1) {
e1.printStackTrace(System.err);
}
}
}
public static void saveMetaData(int localeID,int userID,String[] attributes,String[] values) {
try {
GenericEntity.getStaticInstance(StaffMeta.class).deleteMultiple(StaffMetaDataBMPBean.getColumnNameUserID(),Integer.toString(userID),com.idega.block.staff.data.StaffMetaBMPBean.getColumnNameLocaleId(),Integer.toString(localeID));
}
catch (SQLException e) {
e.printStackTrace(System.err);
}
TransactionManager t = IdegaTransactionManager.getInstance();
StaffMeta meta = null;
try {
t.begin();
for ( int a = 0; a < values.length; a++ ) {
if ( attributes[a] != null && attributes[a].length() > 0 ) {
meta = ((com.idega.block.staff.data.StaffMetaHome)com.idega.data.IDOLookup.getHomeLegacy(StaffMeta.class)).createLegacy();
meta.setUserID(userID);
meta.setLocaleId(localeID);
meta.setAttribute(attributes[a]);
if ( values[a] != null ) {
meta.setValue(values[a]);
}
meta.insert();
}
}
t.commit();
} catch (Exception e) {
e.printStackTrace(System.err);
try {
t.rollback();
} catch (Exception e1) {
e1.printStackTrace(System.err);
}
}
}
public static void deleteGroup(int groupID) {
try {
UserGroupBusiness.deleteGroup(groupID);
}
catch (SQLException e) {
e.printStackTrace(System.err);
}
}
public static void deleteStaff(int userId) {
try {
StaffInfo delStaff = ((com.idega.block.staff.data.StaffInfoHome)com.idega.data.IDOLookup.getHomeLegacy(StaffInfo.class)).findByPrimaryKeyLegacy(userId);
delStaff.delete();
}
catch (SQLException e) {
}
try {
UserBusiness.deleteUser(userId);
}
catch (SQLException e) {
}
}
public static void delete(int userId) {
try {
StaffEntity delStaff = ((com.idega.block.staff.data.StaffEntityHome)com.idega.data.IDOLookup.getHomeLegacy(StaffEntity.class)).findByPrimaryKeyLegacy(userId);
delStaff.delete();
} catch (SQLException e) {
System.err.println(e.getMessage());
} catch (NullPointerException e) {
// No staffEntity
} catch (Exception e) {
e.printStackTrace();
}
try {
StaffInfo delStaff = ((com.idega.block.staff.data.StaffInfoHome)com.idega.data.IDOLookup.getHomeLegacy(StaffInfo.class)).findByPrimaryKeyLegacy(userId);
delStaff.delete();
} catch (SQLException e) {
System.err.println(e.getMessage());
} catch (NullPointerException e) {
// No staffEntity
} catch (Exception e) {
e.printStackTrace();
}
}
} // Class StaffBusiness