package
de.xyz.ucm.service;
import
java.io.File;
import
java.io.IOException;
import
intradoc.common.ExecutionContext;
import
intradoc.common.LocaleUtils;
import
intradoc.common.Log;
import
intradoc.common.ServiceException;
import
intradoc.common.SystemUtils;
import
intradoc.data.DataBinder;
import
intradoc.data.DataException;
import
intradoc.data.DataResultSet;
import
intradoc.data.ResultSet;
import
intradoc.data.Workspace;
import
intradoc.provider.Provider;
import
intradoc.provider.Providers;
import
intradoc.server.Service;
import
intradoc.server.ServiceData;
import
intradoc.server.ServiceHandler;
import
intradoc.server.ServiceManager;
import
intradoc.server.UserStorage;
import
intradoc.shared.SharedObjects;
import
intradoc.shared.UserData;
public
class
PrintingNames
extends
ServiceHandler{
public
void
printTheName()
throws
DataException, ServiceException
{
Log.info(
"Start printing name"
+
true
);
String Docname = m_binder.getLocal(
"dDocName"
);
String serviceName =
"DOC_INFO_BY_NAME"
;
String userName = m_binder.getLocal(
"dUser"
);
Log.info(
"environment "
+m_binder.getEnvironment());
Log.info(
"shared obj val"
+SharedObjects.getEnvironmentValue(
"IntradocServerPort"
));
DataBinder requestBinder =
new
DataBinder();
requestBinder.putLocal(
"dDocName"
, Docname);
requestBinder.putLocal(
"IdcService"
, serviceName);
executeService(requestBinder,
"sysadmin"
,
false
);
final
ResultSet docinforesultset = requestBinder.getResultSet(
"DOC_INFO"
);
DataResultSet docinfodataresultset = (DataResultSet)requestBinder.getResultSet(
"DOC_INFO"
);
DataResultSet result =
new
DataResultSet();
result.copy(docinforesultset);
m_binder.putLocal(
"Message"
,
"Name printed"
);
m_binder.addResultSet(
"demo_resultset1"
, docinforesultset);
m_binder.addResultSet(
"demo_resultset2"
, docinfodataresultset);
Log.info(
"Finished printing name"
);
}
public
void
executeService(DataBinder binder, String userName,
boolean
suppressServiceError)
throws
DataException, ServiceException
{
ServiceException error;
Workspace workspace = getSystemWorkspace();
String cmd = binder.getLocal(
"IdcService"
);
if
(cmd ==
null
)
throw
new
DataException(
"!csIdcServiceMissing"
);
ServiceData serviceData = ServiceManager.getFullService(cmd);
if
(serviceData ==
null
)
throw
new
DataException(LocaleUtils.encodeMessage(
"!csNoServiceDefined"
,
null
, cmd));
Service service = ServiceManager.createService(serviceData.m_classID, workspace,
null
, binder, serviceData);
UserData fullUserData = getFullUserData(userName, service, workspace);
service.setUserData(fullUserData);
binder.m_environment.put(
"REMOTE_USER"
, userName);
error =
null
;
try
{
service.setSendFlags(
true
,
true
);
service.initDelegatedObjects();
service.globalSecurityCheck();
service.preActions();
service.doActions();
service.postActions();
service.updateSubjectInformation(
true
);
service.updateTopicInformation(binder);
}
catch
(ServiceException e)
{
error = e;
}
finally
{
service.cleanUp(
true
);
workspace.releaseConnection();
}
if
(error !=
null
)
if
(suppressServiceError)
{
error.printStackTrace();
if
(binder.getLocal(
"StatusCode"
) ==
null
)
{
binder.putLocal(
"StatusCode"
, String.valueOf(error.m_errorCode));
binder.putLocal(
"StatusMessage"
, error.getMessage());
}
}
else
{
throw
new
ServiceException(error.m_errorCode, error.getMessage());
}
return
;
}
public
UserData getFullUserData(String userName, ExecutionContext cxt, Workspace ws)
throws
DataException, ServiceException
{
if
(ws ==
null
)
ws = getSystemWorkspace();
UserData userData = UserStorage.retrieveUserDatabaseProfileDataFull(userName, ws,
null
, cxt,
true
,
true
);
ws.releaseConnection();
return
userData;
}
public
static
Workspace getSystemWorkspace()
{
Workspace workspace =
null
;
Provider wsProvider = Providers.getProvider(
"SystemDatabase"
);
if
(wsProvider !=
null
)
{
workspace = (Workspace) wsProvider.getProvider();
}
return
workspace;
}
}