Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

ColdFusion 8 ODBC agent service missing

New Here ,
Nov 16, 2011 Nov 16, 2011

I am in the process of rebuilding our server that is running ColdFusion.  I am having trouble getting the ODBC services to install and run properly which I need to be able to connect to some MS Access databases.

Configuration:

  • Microsoft Windows Server 2008 R2 64-bit
  • WebSphere 6.1
  • ColdFusion 8  (when installed shows as version 8,0,0,176276)

The installation of ColdFusion and deployment to WebSphere seemed to be ok.  CF seemed to be working until I tried configuring an MS Access database. What I found was:

  • "ColdFusion 8 ODBC Server" appeared in the services but would not start.
  • "ColdFusion 8 ODBC Agent" did not appear in the services.

I tried following the documented processes to manually remove and install the ODBC services, however when I run the install, I get HTTP 500 errors.  Digging deeper I found that the configuration files that I was supposed to copy in referenced locations that were not where CF was installed.  I made changes to those files to hopefully fix the problems.  Now when I run the install process, I note the following:

  • I still get HTTP 500 error when I run the install.
  • ColdFusion 8 ODBC Server appears in the services and now seems to start ok.
  • ColdFusion 8 ODBC Agent does not appear.
  • I can configure MS Access, but get these errors:
    • Unable to update the NT registry.
    • Unable to load library
  • The data source appears in the list of data sources but it does not work.

By the way, I originally installed the documentation with CF.

Does anyone have any ideas on what my problem might be?

2.4K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Nov 16, 2011 Nov 16, 2011
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 16, 2011 Nov 16, 2011

Thanks Bob.  That site was indeed helpful.  It explained a lot of things very nicely.  However, I am still stuck.  I followed the instructions there and when I try to access the database in a test app, I get "SQLException while attempting to connect: java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][SequeLink Server]The specified data source is not defined.."

Note that I am still in a situation where I do not have a service with the name "ColdFusion 8 ODBC Agent".  Somehow I feel this is related to my impediment.

Thanks,

Dick Horner

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 24, 2011 Nov 24, 2011

You may need to reinstall SequeLink. There are a couple of more or less relevant technotes on the Adobe site, like this one:

http://kb2.adobe.com/cps/191/tn_19135.html

All that said, I would recommend you spend the time to migrate your databases from Access to ... something else. Almost anything else.

Dave Watts, CTO, Fig Leaf Software

Dave Watts, Eidolon LLC
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 13, 2017 Jul 13, 2017
LATEST

I have solved the problem 10 years later since my last failed attempt to install ColdFusion 8 ODBC Server and Agent services.

The installation of ColdFusion 8 ODBC Server and Agent services is broken for CF8 J2EE EAR deployment in any container (JRun 4, JBoss or WebLogic etc).

The culprit is in my instance C:\JRun4\servers\default\cfusion-ear\cfusion-war\CFIDE\adminapi\datasource.cfc which has to be modified to ensure a post-deployment manual installation of ColdFusion 8 ODBC Server and Agent services.

And an installODBC.cfm should be created to invoke the installODBCservice() function, the function i modified, within the aforementioned datasource.cfc.

installODBC.cfm which is manually requested to install the services:

<cfscript>
//login
adminObj = createObject("component","cfide.adminapi.administrator");
adminObj.login("password");

//instantiate caching object
myObj = createObject("component","cfide.adminapi.datasource");

/*   
//remove odbc services - if services are installed but not running properly an uninstall and re-install may help
writeOutput("Removing ODBC Services...<br>");
    returnValue = myObj.removeODBCservice();
    writeOutput("ODBC Services removed<br>");
*/

// install ODBC services
    writeOutput("Installing ODBC Services...<br>");
    returnValue = myObj.installODBCservice();
    writeOutput("ODBC Services installed<br>");
</cfscript>

BTW, you should better modify C:\JRun4\servers\default\cfusion-ear\cfusion-war\WEB-INF\cfusion\db\SequeLink Setup\RemoveSequeLink.bat into the following and run it beforehand (before you request installODBC.cfm).

rem Older versions of CFMX (pre-6.1) had this service name

CFServiceController /R "ColdFusion MX ODBC Agent"

CFServiceController /R "ColdFusion MX ODBC Server"

CFServiceController /R "ColdFusion 8 ODBC Agent"

CFServiceController /R "ColdFusion 8 ODBC Server"

datasource.cfc should be:

<!--- ::
* Copyright (c) 1995-2005 Macromedia, Inc. All rights reserved.
:: --->
<cfcomponent displayname="datasource" extends="base" hint="Add, modify, and delete ColdFusion data sources.">
<cfimport prefix="admin" taglib="./customtags">
<cfparam name="request.locale" default="#createObject("java", "java.util.Locale").getDefault().getLanguage()#">
<cfscript>
  factory = createObject("java", "coldfusion.server.ServiceFactory");
  dsnService = factory.getDataSourceService();
  security = factory.getSecurityService();
  license = factory.getLicenseService();
  variables.localeFile = "/CFIDE/adminapi/customtags/resources/adminapi_#request.locale#.xml";
</cfscript>

<cffunction name="getODBCDatasources" output="false" access="public" returntype="any" hint="Returns a query object that contains one row for each ODBC data source.">
  <cfset var Branch_ODBCINI  = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI">
  <cfset var Branch_ODBCDS   = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources">
  <cfset var Branch_ODBCINST = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("windows, coldfusion.datasources")>
 
  <cftry>
   <cfregistry action="GETALL" name="qODBC" type="string" sort="entry" branch="#Branch_ODBCDS#">
   <cfif isDefined("qODBC")>
    <cfreturn qODBC>
   </cfif> 
   <cfcatch type="Any">
    <!--- :: swallow, return default :: --->
   </cfcatch>
  </cftry>
  <cfreturn queryNew("entry,type,value")>
</cffunction>

<cffunction name="getDatasources"  output="false" access="public" returntype="any" hint="Returns a structure containing all data sources or a specified data source.">
  <cfargument name="dsnname" required="false" hint="The name of the data source for which a structure is returned.">
  <cfset var db = structNew()>
  <cfset var origdb = structNew()>
  <cfset var key = "">
  <!---
    We have to allow access via the coldfusion.saandboxsecurity role since this
    function is invoked from getDisabledDatasources() and setDisabledDatasources()
   --->
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources,coldfusion.sandboxsecurity,coldfusion.serversettings,coldfusion.serversettingssummary", false)>
  <cfscript>
  if( isDefined("arguments.dsnname"))
  {
   origdb = dsnService.datasources[arguments.dsnname];
   for( key in origdb )
   {
    if( isSimpleValue(origdb[key]))
    {
     db[lcase(key)] = trim(origdb[key]);
    }else{
     db[lcase(key)] = origdb[key];
    }
   }
   for(key in origdb.urlmap)
   {
    db[lcase(key)] = origdb.urlmap[key];
   }
   structDelete(db, "URLMap");
 
   return db;
  }else{
   return dsnService.datasources;
  }
  </cfscript>
</cffunction>

<cffunction name="getDriverDetails" output="false" access="public" returntype="struct" hint="Returns a structure containing all drivers">
  <cfargument name="driverName" type="String" required="false" default="" hint="Name of the driver, if this is passed details of only that driver is returned">
  <cfset var driverDetails=StructNew()>
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
  <cfset driverDetailsCopy = duplicate(dsnService.drivers)>
  <!--- Note: Any change made to this function to include or exclude drivers, has to be updated at
   CFIDE/datasources/index.cfm--->
  <!--- ::
  add new MSAccessJet driver. We have to do this because we won't be able to lay down
  a new neo-drivers.xml file for CFMX to Redsky upgrades.
  :: --->
  <cftry>
   <cffile action="READ" file="#server.coldfusion.rootdir#/lib/neo-drivers.xml" variable="queryxml">
   <cfwddx action="WDDX2CFML" input="#queryxml#" output="querycfml">
   <cfif ( not structKeyExists(querycfml[1], "MSAccessJet") )>
       <cfscript>
     st = structNew();
     st.class = "com.inzoom.jdbcado.Driver";
     st.handler = "msaccessjet.cfm";
     st.name = "Microsoft Access with Unicode Support";
     st.port = "";
     st.url = "jdbc:izmado:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[databasefile];IzmJdbcEsc=yes;IzmReleaseOnClose=no";
     st.vendor = "Macromedia";
     querycfml[1]["MSAccessJet"] = st;
    </cfscript>
    <cfwddx action="cfml2wddx" input="#querycfml#" output="queryxml">
    <cffile action="WRITE" file="#server.coldfusion.rootdir#/lib/neo-drivers.xml" output="#queryxml#" addnewline="No">
   </cfif>
   <cfcatch type="Any">
    <!--- :: if there is an error reading the file we will swallow this error, and leave it to the datasource service to handle it :: --->
   </cfcatch>
  </cftry>
  <cfif not isDefined("request.license")>
   <cfset request.license = factory.getLicenseService()>
  </cfif>
  <!--- /// remove the  /// --->
 
  <cfscript>
  //remove for all        
   //structDelete(stDrivers, "PostgreSQL", false);
   structDelete(driverDetailsCopy, "OracleThin", false);
   structDelete(driverDetailsCopy, "SybaseJConnect5", false);
   structDelete(driverDetailsCopy, "DB2_OS390", false);
   //structDelete(stDrivers, "MySQL", false);
   if( FindNoCase("unix", server.os.name) or FindNoCase("Mac", server.os.name)  or FindNoCase("windows 98", server.os.name) or FindNoCase("windows me", server.os.name))
   {
     structDelete(driverDetailsCopy, "MSAccess", false);
     structDelete(driverDetailsCopy, "ODBCSocket", false);  
   } 
   if (not FindNoCase("windows 98", server.os.name) AND not FindNoCase("windows me", server.os.name))
   {
     structDelete(driverDetailsCopy, "JDBC_ODBC_Bridge", false);
   }
   //remove the msAccessJet (w/unicode) driver if we're on unix or there was an error registering the driver
   if( not dsnService.isJadoZoomLoaded() )
   {
    structDelete(driverDetailsCopy, "MSAccessJet", false);
   }
   
   //remove for the proffessional version.
   if(getEdition() is "Standard")
   {
    structDelete(driverDetailsCopy, "Oracle", false);
    structDelete(driverDetailsCopy, "DB2", false);
    structDelete(driverDetailsCopy, "Sybase", false);
    structDelete(driverDetailsCopy, "Informix", false);
   }
   if (getEdition().indexOf("Enterprise")  NEQ -1)
   {
    st = structNew();
    st.handler = "j2ee.cfm";
    st.name = "J2EE Datasource (JNDI)";
    st.port = "";
    structInsert(driverDetailsCopy,"J2EE",st);
   }           
  </cfscript>
 
  <cfif driverName eq "">
   <cfset keyList = StructKeyList(driverDetailsCopy)>
   <cfloop index = "keyIndex" list = "#keyList#">
    <cfset driverValue = StructFind(driverDetailsCopy,"#keyIndex#")>
    <cfset driverName = driverValue.name>
    <cfset StructDelete(driverValue,"handler",false)>
    <cfset StructDelete(driverValue,"name",false)>
    <cfset StructInsert(driverDetails,driverName,driverValue,true)>
   </cfloop>
   <cfreturn driverDetails>
  <cfelse>
   <cfif StructKeyExists(driverDetailsCopy,driverName)>
    <cfset specificDriverValue = StructFind(driverDetailsCopy,driverName)>
    <cfset StructDelete(specificDriverValue,"name",false)>
    <cfset StructDelete(specificDriverValue,"handler",false)>
    <cfreturn specificDriverValue>
   <cfelse>
    <cfreturn driverDetails>
   </cfif>
  </cfif>
</cffunction>

<cffunction name="deleteDatasource" output="false" access="public" returntype="void" hint="Deletes the specified data source.">
  <cfargument name="dsnname" required="true" hint="The name of the data source to be deleted.">
  <cfset var thisdsn = getDatasources(dsnname)>
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
 
<!--- Delete the DS record from the list of data sources ---->
  <cfif thisdsn.driver eq "MSAccess">
   <cftry>
   <cfset Branch_ODBCINI  = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI">
   <cfset Branch_ODBCDS   = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources">
   <cfset Branch_ODBCINST = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI">
    <cfregistry action="DELETE" branch="#Branch_ODBCDS#" entry="#dsnname#">
     <!--- Also delete the old DS info branch ---->   
    <cfregistry action="DELETE" branch="#Branch_ODBCINI#\#dsnname#">
    <cfcatch type="Any">
     <!--- /// swallow /// --->
    </cfcatch>
   </cftry>
  </cfif> 
 
  <!--- /// delete from the odbc server /// --->
  <cfif thisdsn.driver eq "MSAccess" or thisdsn.driver eq "ODBCSocket">
   <cfset sl54Del(arguments.dsnname)>
  </cfif>
  
  <!--- :: delete from the jdbc pool :: --->
  <cfscript>
   dsn = getDatasources(arguments.dsnname);
   if( dsn.driver eq "ODBCSocket" )
   {
    sl54Del(arguments.dsnname);
   }
   structDelete(dsnService.datasources, arguments.dsnname, true);
   dsnService.removeDatasource(arguments.dsnname);
  </cfscript> 

</cffunction>
<!--- ::
individual datasources
:: --->
<cffunction name="setDB2" access="public" output="false" returntype="void" hint="Creates or modifies a DB2 data source. Refer to the ColdFusion documentation or ColdFusion MX Administrator online Help for a list of supported DB2 versions.">
  <cfargument name="name" required="true" type="string" hint="ColdFusion data source name.">
  <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
  <cfargument name="database"  required="true" type="string" hint="Name of database on the server.">
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion data source name (use if you are renaming this data source).">
  <cfargument name="port" default="50000"  required="false" type="string" hint="Port used to access the database server. The default is 50000.">
  <cfargument name="driver" default="DB2" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="macromedia.jdbc.MacromediaDriver" required="false" type="string" hint="Fully qualified JDBC driver class name.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="Data source description.">
  <cfargument name="initargs" default=""  required="false" type="string" hint="Initialization connection string arguments, formatted (arg1=arg1value;arg2=arg2value).">
  <cfargument name="args" default=""  required="false" type="string" hint="Connection string arguments, formatted (arg1=arg1value;arg2=arg2value).">
  <cfargument name="MaxPooledStatements" required="false" type="numeric" hint="The maximum number of pooled statements.">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes."> 
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Limit the number of data source connections to the value specified in the maxconnections argument.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="The maximum number of data source connections; used if you specify True for the enablemaxconnections argument.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for the data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Disable connections to data sources.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="vendor" required="false" type="string" default="db2" hint="Always DB2.">
  <cfargument name="type" required="false" type="string" default="ddtek" hint="Always ddtek.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
  <cfset var connectionArgs = arguments.args><!--- :: set this to a 2nd var as a temp storage location :: --->
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>  
  
   <!--- :: init dsn with initargs :: --->
   <cfset arguments.args = arguments.initArgs>
   <cfinclude template="_datasource\setdsn.cfm">
  
   <cftry>
    <cfset verifyDsn(arguments.dsn)>
    <cfcatch type="Any"></cfcatch>
   </cftry>
  
   <!--- :: reset dsn with the correct args :: --->
   <cfset arguments.args = connectionArgs>
   <cfinclude template="_datasource\setdsn.cfm">
  
   <cftry>
    <cfset verifyDsn(arguments.dsn)>
    <cfcatch type="Any"></cfcatch>
   </cftry>

</cffunction>



<cffunction name="setInformix" access="public" output="false" returntype="void" hint="Creates or modifies an Informix data source.">
  <cfargument name="vendor" required="false" type="string" default="informix" hint="Always Informix.">
  <cfargument name="type" required="false" type="string" default="ddtek" hint="Always ddtek.">  
  <cfargument name="name" required="true" type="string" hint="ColdFusion data source name.">
  <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
  <cfargument name="database"  required="true" type="string" hint="Name of database on the server.">
  <cfargument name="InformixServer"  required="true" type="string" hint="Name of the Informix server that corresponds to the data source.">
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion data source name (use if you are renaming this data source).">
  <cfargument name="port" default="1526" required="false" type="string" hint="Port used to access the database server. The default is 1526.">
  <cfargument name="driver" default="Informix" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="macromedia.jdbc.MacromediaDriver" required="false" type="string" hint="JDBC driver class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="Data source description.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <cfargument name="MaxPooledStatements"  required="false" type="numeric" hint="The maximum number of pooled statements.">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Limit the number of data source connections to the value specified in the maxconnections argument.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="The maximum number of data source connections; used if you specify True for the enablemaxconnections argument.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for the data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Disable connections to data sources.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL  DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>



<cffunction name="setMSAccess" access="public" output="false" returntype="void" hint="Creates or modifies a Microsoft Access data source.">
  <cfargument name="name" required="true" type="string" hint="ColdFusion data source name.">
  <cfargument name="databasefile"  required="true" type="string" hint="Fully qualified path to the file containing the Access MDB file.">
 
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion data source name (use if you are renaming this data source).">
  <cfargument name="driver" default="MSAccess" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="macromedia.jdbc.MacromediaDriver" required="false" type="string" hint="Fully qualified JDBC driver class name.">
  <cfargument name="port" default="19998"  required="false" type="string" hint="Port used to access the database server. The default is 19998.">
  <cfargument name="username" default="System" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="Data source description.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=arg1value;arg2=arg2value).">
  <cfargument name="systemDatabaseFile"  required="false" type="string" hint="For secure access to the database file, specify the fully qualified path name of the database that contains database security information. The system database is usually located in winnt\system32\system.mdw.">
  <cfargument name="UseTrustedConnection" default="true" required="false" type="boolean" hint="If selected, causes ODBC driver to use the credentials specified in the ODBC connection or the network login id.">
  <cfargument name="defaultusername" default="" required="false" type="string" hint="The user name that the driver uses to connect to the data source if an application requests a connection without supplying a user name.">
  <cfargument name="maxBufferSize" required="false" type="numeric" hint="The total number of bytes that ColdFusion MX uses to cache application pages. Enter a value to optimize ColdFusion performance.">
  <cfargument name="pageTimeout" default="600" required="false" type="numeric" hint="The number of milliseconds before a request for a ColdFusion page times out. The default is 600. If you observe excessive network activity when using this driver, increase the page timeout value.">
  <cfargument name="TimeStampAsString" default="no" required="false" type="boolean" hint="Enable this setting if your application retrieves Date/Time data and then re-uses it in SQL statements without applying formatting (using functions such as DateFormat, TimeFormat, and CreateODBCDateTime). Specify True or False.">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Limit the number of data source connections to the value specified in the maxconnections argument.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="The maximum number of data source connections; used if you specify True for the enablemaxconnections argument.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for the data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Disable connections to data sources.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
            <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")> 
            <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
   <cfinclude template="_datasource\setmsaccessregistry.cfm">
   <cfscript>
    sleep(1000);
   </cfscript>
   <cfinclude template="_datasource\setsldatasource.cfm">
</cffunction>



<cffunction name="setMSAccessUnicode" access="public" output="false" returntype="void" hint="Creates or modifies a Microsoft Access Unicode data source.">
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="databasefile"  required="true" type="string" hint="database name that corresponds to the data source.">

  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="driver" default="MSAccessJet" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="com.inzoom.jdbcado.Driver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="Data source description.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <!--- :: advanced options :: --->
  <cfargument name="pageTimeout" default="600" required="false" type="numeric" hint="The number of milliseconds before a request for a ColdFusion page times out. The default is 600. If you observe excessive network activity when using this driver, increase the page timeout value.">
  <cfargument name="maxBufferSize" required="false" type="numeric" hint="The total number of bytes that ColdFusion MX uses to cache application pages. Enter a value to optimize ColdFusion performance.">
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>


<cffunction name="setMSSQL" access="public" output="false" returntype="void" hint="Creates or modifies a Microsoft SQL Server data source.">
  <cfargument name="vendor" required="false" type="string" default="sqlserver" hint="Always Microsoft.">
  <cfargument name="type" required="false" type="string" default="ddtek" hint="Always ddtek.">  
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
  <cfargument name="database"  required="true" type="string" hint="Database name that corresponds to the data source.">

  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="port" default="1433" required="false" type="string" hint="Port that is used to access the database server. (default 1433)">
  <cfargument name="driver" default="MSSQLServer" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="macromedia.jdbc.MacromediaDriver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="A description for this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <cfargument name="sendStringParametersAsUnicode" required="false" type="boolean" hint="Enable Unicode for data sources configured for non-Latin characters ">
  <cfargument name="selectmethod" default="cursor"  required="true" type="string" hint="Select Method (direct or cursor)">
  <cfargument name="MaxPooledStatements" required="false" type="numeric" hint="The maximum number of pooled statements.">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>

<cffunction name="setPostGreSQL" access="public" output="false" returntype="void" hint="Creates or modifies a PostGreSQL data source.">
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
  <cfargument name="database"  required="true" type="string" hint="Database name that corresponds to the data source.">

  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="port" default="5432" required="false" type="string" hint="Port that is used to access the database server. (default 5432)">
  <cfargument name="driver" default="PostgreSQL" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="org.postgresql.Driver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-datasource.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="A description for this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>

<cffunction name="setMySQL5" access="public" output="false" returntype="void" hint="Creates or modifies a MySQL 4 or MySQL 5 data source.">
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
  <cfargument name="database"  required="true" type="string" hint="Database name that corresponds to the data source.">
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="port" default="3306" required="false" type="string" hint="Port that is used to access the database server. (default 3306)">
  <cfargument name="driver" default="MySQL5" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="com.mysql.jdbc.Driver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="A description of this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>

<cffunction name="setMySQL" access="public" output="false" returntype="void" hint="Creates or modifies a MySQL 3 data source.">
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
  <cfargument name="database"  required="true" type="string" hint="Database name that corresponds to the data source.">
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="port" default="3306" required="false" type="string" hint="Port that is used to access the database server. (default 3306)">
  <cfargument name="driver" default="MySQL" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="org.gjt.mm.mysql.Driver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="A description of this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")> 
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>

<cffunction name="setDerbyEmbedded" access="public" output="false" returntype="void" hint="Creates or modifies an Apache Derby Embedded data source.">
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="database"  required="true" type="string" hint="Fully qualified path to the folder containing the Derby database.">
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="driver" default="Apache Derby Embedded" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="org.apache.derby.jdbc.EmbeddedDriver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="A description of this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <cfargument name="isnewdb"  required="false" type="boolean" default="false" hint="Indicates whether the database needs to be created">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")> 
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>

    <cffunction name="setDerbyClient" access="public" output="false" returntype="void" hint="Creates or modifies an Apache Derby Client data source.">
        <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
        <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
        <cfargument name="database"  required="true" type="string" hint="Database name that corresponds to the data source.">
        <!--- :: optional :: --->
        <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion datasource name, if you are renaming this dsn.">
        <cfargument name="driver" default="Apache Derby Client" required="false" type="string" hint="JDBC driver.">
        <cfargument name="class" default="org.apache.derby.jdbc.ClientDriver" required="false" type="string" hint="JDBC class file.">
        <cfargument name="username" default="" required="false" type="string" hint="Database username.">
        <cfargument name="password" default="" required="false" type="string" hint="Database password.">
        <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
        <cfargument name="description" default="" required="false" type="string" hint="A description of this data source connection.">
        <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
        <!--- :: advanced options :: --->
        <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
        <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
        <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
        <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
        <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
        <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
        <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
        <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
        <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
        <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
        <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
        <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
        <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
        <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
        <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
        <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
        <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
        <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
        <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
        <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
        <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
        <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")> 
        <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
            <cfinclude template="_datasource\setdsn.cfm">
    </cffunction>
  
<cffunction name="setODBCSocket" access="public" output="true" returntype="void" hint="Creates or modifies an ODBC socket data source.">
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="datasource"  required="true" type="string" hint="name of ODBC datasource, defined in the server control panel.">
  <cfargument name="useTrustedConnection" required="false" type="string" hint="If selected, causes ODBC driver to use the credentials specified in the ODBC connection or the network login id.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <!--- :: optional :: --->
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="host" default="localhost" required="false" type="string" hint="Database server host name or IP address.">
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="port"  default="19998" required="false" type="string" hint="Port that is used to access the database server. (default 19998)">
  <cfargument name="driver" default="ODBCSocket" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="macromedia.jdbc.MacromediaDriver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="description" default="" required="false" type="string" hint="A description of this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <cfargument name="TimeStampAsString" default="no" required="false" type="boolean" hint="Enable this setting if your application retrieves Date/Time data and then re-uses it in SQL statements without applying formatting (using functions such as DateFormat, TimeFormat, and CreateODBCDateTime). Specify True or False.">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources,windows")>
   <cfinclude template="_datasource\setdsn.cfm">
   <cfinclude template="_datasource\setsldatasource.cfm">
</cffunction>

<cffunction name="setOracle" access="public" output="false" returntype="void" hint="Creates or modifies an Oracle data source.">
  <cfargument name="vendor" required="false" type="string" default="oracle" hint="Always Oracle.">
  <cfargument name="type" required="false" type="string" default="ddtek" hint="Always ddtek.">  
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
  <cfargument name="sid"  required="true" type="string" hint="The Oracle System Identifier that refers to the instance of the Oracle database software running on the server. ORCL is the default.">
>
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="port" default="1521"  required="false" type="string" hint="Port that is used to access the database server. (default 1521)">
  <cfargument name="driver" default="Oracle" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="macromedia.jdbc.MacromediaDriver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="A description of this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <cfargument name="MaxPooledStatements" required="false" type="numeric" hint="The maximum number of pooled statements.">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>


<cffunction name="setSybase" access="public" output="false" returntype="void" hint="Creates or modifies a Sybase data source.">
  <cfargument name="vendor" required="false" type="string" default="sybase" hint="Always Sybase.">
  <cfargument name="type" required="false" type="string" default="ddtek" hint="Always ddtek.">  
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="host"  required="true" type="string" hint="Database server host name or IP address.">
  <cfargument name="database"  required="true" type="string" hint="Database name that corresponds to the data source.">
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="port" default="5000"  required="false" type="string" hint="Port that is used to access the database server. (default 5000)">
  <cfargument name="driver" default="Sybase" required="false" type="string" hint="JDBC driver.">
  <cfargument name="class" default="macromedia.jdbc.MacromediaDriver" required="false" type="string" hint="JDBC class file.">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="Description of this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <cfargument name="selectmethod" default="direct"  required="false" type="string" hint="Select Method (direct or cursor).">
  <cfargument name="MaxPooledStatements" required="false" type="numeric" hint="The maximum number of pooled statements.">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>


<cffunction name="setOther" access="public" output="true" returntype="void" hint="Creates or modifies a user-defined data source">
  <cfargument name="name" required="true" type="string" hint="ColdFusion datasource name.">
  <cfargument name="url" required="true" type="string" hint="The JDBC Connection URL for this data source.">
  <cfargument name="class" required="true" type="string" hint="JDBC class file.">
  <cfargument name="driver" required="false" type="string" hint="JDBC driver.">
  <!--- :: optional :: --->
  <cfargument name="originaldsn" default="" required="false" type="string" hint="Original ColdFusion datasource name, if you are renaming this dsn.">
  <cfargument name="port" default="1433" required="false" type="string" hint="port that is used to access the database server. (default 1433)">
  <cfargument name="username" default="" required="false" type="string" hint="Database username.">
  <cfargument name="password" default="" required="false" type="string" hint="Database password.">
  <cfargument name="encryptpassword" default="true" required="false" type="boolean" hint="Indicates whether to encrypt the password when storing it in the neo-query.xml file:<ul><li>True ?Encrypt the password before storing it. </li><li>False - Store the password in clear text.</li><br><b>Note:</b> If you are updating a data source that already has an encrypted password, you must set this argument to false to avoid re-encrypting an encrypted password.</ul>">
  <cfargument name="description" default="" required="false" type="string" hint="A description of this data source connection.">
  <cfargument name="args"  required="false" type="string" hint="Connection string arguments, formatted (arg1=argvalue;arg2=argvalue).">
  <cfargument name="selectmethod" default="cursor"  required="true" type="string" hint="Select Method (direct or cursor).">
  <cfargument name="MaxPooledStatements" required="false" type="numeric" hint="The maximum number of pooled statements.">
  <!--- :: advanced options :: --->
  <cfargument name="timeout" required="false" type="numeric" hint="The number of seconds that ColdFusion maintains an unused connection before destroying it.">
  <cfargument name="interval" required="false" type="numeric" hint="The time (in seconds) that the server waits between cycles to check for expired data source connections to close.">
  <cfargument name="login_timeout" required="false" type="numeric" hint="The number of seconds before ColdFusion times out the data source connection login attempt.">
  <cfargument name="buffer" required="false" type="numeric" hint="The default buffer size, used if disable_clob is not specified or True. Default is 64000 bytes.">
  <cfargument name="blob_buffer" required="false" type="numeric" hint="The default buffer size, used if disable_blob is not specified or True. Default is 64000 bytes.">
  <cfargument name="enablemaxconnections" required="false" type="boolean" hint="Enables the maxconnections setting.">
  <cfargument name="maxconnections" required="false" type="numeric" hint="Limit connections to this maximum amount.">
  <cfargument name="pooling" default="false" required="false" type="boolean" hint="Enable server connection pooling for your data source.">
  <cfargument name="disable" required="false" type="boolean" hint="Suspends all client connections to the data source.">
  <cfargument name="disable_clob" required="false" type="boolean" hint="Specify False to return the entire contents of any CLOB/Text columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the buffer argument.">
  <cfargument name="disable_blob" required="false" type="boolean" hint="Specify False to return the entire contents of any BLOB/Image columns in the database. If you specify False, ColdFusion MX retrieves up to the amount specified in the blob_buffer setting.">
  <cfargument name="select" required="false" type="boolean" hint="Allow SQL SELECT statements.">
  <cfargument name="create" required="false" type="boolean" hint="Allow SQL CREATE statements.">
  <cfargument name="grant" required="false" type="boolean" hint="Allow SQL GRANT statements.">
  <cfargument name="insert" required="false" type="boolean" hint="Allow SQL INSERT statements.">
  <cfargument name="drop" required="false" type="boolean" hint="Allow SQL DROP statements.">
  <cfargument name="revoke" required="false" type="boolean" hint="Allow SQL REVOKE statements.">
  <cfargument name="update" required="false" type="boolean" hint="Allow SQL UPDATE statements.">
  <cfargument name="alter" required="false" type="boolean" hint="Allow SQL ALTER statements.">
  <cfargument name="storedproc" required="false" type="boolean" hint="Allow SQL stored procedure calls.">
  <cfargument name="delete" required="false" type="boolean" hint="Allow SQL DELETE statements.">
  <cfargument name="validationQuery" default=""  required="false" type="string" hint="Validation Query used by Coldfusion for validating the connection state when removing connections from the connection pool.">
  <cfset var createURL = false>
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
   <cfinclude template="_datasource\setdsn.cfm">
</cffunction>


<!--- ::
Sequel link
:: --->
<cffunction name="stopOdbcService" access="public" output="false" returntype="void" hint="Stops ODBC service.">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources,windows")>
  <cfexecute timeout="30" name="net.exe" arguments='stop "#odbcserver#"'></cfexecute>
  <cfexecute timeout="30" name="net.exe" arguments='stop "#odbcagent#"'></cfexecute>
</cffunction>

<cffunction name="startOdbcService" access="public" output="false" hint="Starts ODBC service.">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources,windows")>
  <cfexecute timeout="30" name="net.exe" arguments='start "#odbcserver#"'></cfexecute>
  <cfexecute timeout="30" name="net.exe" arguments='start "#odbcagent#"'></cfexecute>
</cffunction>

<cffunction name="removeOdbcService" access="public" output="false" returntype="void" hint="Removes ODBC service.">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
  <cfset var success = true>
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources,windows")>
  <cftry>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/R "#odbcserver#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/R "#odbcagent#"'></cfexecute>
  
   <cfcatch type="Any">
    <cfset success = false>
    <cfoutput>#cfcatch.message#<br>#cfcatch.detail#<p></cfoutput>
    <cfset bErrorsExist = true>
    <cfrethrow>
   </cfcatch>
  </cftry>
</cffunction>

<cffunction name="installOdbcService" access="public" output="false" returntype="void" hint="Installs ODBC service.">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
                <cfset var branch="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\">
                <cfset var odbcserverdesc = "The middle-tier service for ODBC connections that use the DataDirect drivers for Microsoft Access and ODBC Socket.">
                <cfset var odbcagentdesc = "Configures data sources for the ColdFusion 8 ODBC Server.">

  <cfset var success = true>
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources,windows")>
  <cftry>
   <!-- ODBC Server stuff -->
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/A "#odbcserver#" "#server.coldfusion.rootdir#\db\slserver54\bin\swstrtr.exe" -quoteparams "#odbcserver#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcserver#" ServiceName "#odbcserver#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcserver#" ServiceDescription "#odbcserver#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcserver#" DataModel "#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcserver#" LoggingPath "#server.coldfusion.rootdir#\db\slserver54\logging"'></cfexecute>
   <cfexecute timeout="30"
    name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe"
    arguments='/X "SYSTEM\CurrentControlSet\Services\#odbcserver#" FailureActions "80,51,01,00,00,00,00,00,00,00,00,00,03,00,00,00,53,00,65,00,01,00,00,00,60,ea,00,00,01,00,00,00,60,ea,00,00,01,00,00,00,60,ea,00,00" BINARY cheese'></cfexecute>

   <!--- :: ODBC agent :: --->
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/A "#odbcagent#" "#server.coldfusion.rootdir#\db\slserver54\bin\swagent.exe" -quoteparams "#odbcagent#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcagent#" ServiceName "#odbcagent#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcagent#" ServiceDescription "#odbcagent#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcagent#" DataModel "#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcagent#" LoggingPath "#server.coldfusion.rootdir#\db\slserver54\logging"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#odbcagent#" Agent " "'></cfexecute>

   <cfcatch type="Any">
    <cfset success = false>
    <cfoutput>#cfcatch.message#<br>#cfcatch.detail#<p></cfoutput>
    <cfset bErrorsExist = true>
    <cfrethrow>
   </cfcatch>
  </cftry>
 
 
  <!--- :: create directories :: --->
  <cftry>
   <cfif not DirectoryExists("#server.coldfusion.rootdir#\db\slserver54\logging")>
    <cfdirectory action="CREATE" directory="#server.coldfusion.rootdir#\db\slserver54\logging">
   </cfif>
   <cfif not DirectoryExists("#server.coldfusion.rootdir#\db\slserver54\tracing")>
    <cfdirectory action="CREATE" directory="#server.coldfusion.rootdir#\db\slserver54\tracing">
   </cfif>
 
   <cfcatch type="Any">
    <cfset success = false>
    <cfoutput>#cfcatch.message#<br>#cfcatch.detail#<p></cfoutput>
    <cfset bErrorsExist = true>
    <cfrethrow>
   </cfcatch>
  </cftry>
  <!--- :: <cfdump var="#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini"> :: --->
  <!--- Configure the SequeLink Inifiles --->
  <cftry>
   
    <!--- :: REPLACE strings in INI :: --->
    <cffile action="READ" file="#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini" variable="swandmini">
     <cfscript>
      setprofileString("#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini", "SWANDM", "SWANDM", "");
      swandmini = replaceNoCase(swandmini, "DataSourceProviderTypesFile=C:\Program Files\DataDirect\slserver54\bin\swsoc.ini", "DataSourceProviderTypesFile=#server.coldfusion.rootdir#\db\slserver54\bin\swsoc.ini", "ALL");
      swandmini = replaceNoCase(swandmini, "C:\Program Files\DataDirect", "#server.coldfusion.rootdir#\db", "ALL");
      swandmini = replaceNoCase(swandmini, odbcserver, "ColdFusion 8 ODBC Server", "ALL");
      swandmini = replaceNoCase(swandmini, odbcagent, "ColdFusion 8 ODBC Agent", "ALL");
      if( license.getServerType() neq license.SERVERTYPE_STANDALONE )
      {
      //replace the name of this dll for the j2ee version.
       swandmini = replaceNoCase(swandmini, "cmgss_an.dll", "cmgss_sp.dll", "ALL");
      }
     </cfscript>
    <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini" output="#swandmini#" addnewline="no">
 
    <cffile action="READ" file="#server.coldfusion.rootdir#\db\slserver54\admin\swcla.ini" variable="swclaini">
     <cfscript>
      swclaini = replaceNoCase(swclaini, "C:\Program Files\DataDirect", "#server.coldfusion.rootdir#\db", "ALL");
     </cfscript>
    <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\admin\swcla.ini" output="#swclaini#" addnewline="no">
 
    <cffile action="READ" file="#server.coldfusion.rootdir#\db\slserver54\bin\slxperf.ini" variable="slxperf">
     <cfscript>
      slxperf = replaceNoCase(slxperf, "C:\Program Files\DataDirect", "#server.coldfusion.rootdir#\db", "ALL");
     </cfscript>
    <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\bin\slxperf.ini" output="#slxperf#" addnewline="no">
 
 
   <cfdirectory action="LIST" directory="#server.coldfusion.rootdir#\db\slserver54\admin" name="batfiles" filter="*.bat">
   <cfloop query="batfiles">
    <cffile action="READ" file="#server.coldfusion.rootdir#\db\slserver54\admin\#name#" variable="adminini">
     <cfscript>
      adminini = replaceNoCase(adminini, arguments.odbcserver, "ColdFusion 8 ODBC Server", "ALL");
      adminini = replaceNoCase(adminini, arguments.odbcagent, "ColdFusion 8 ODBC Agent", "ALL");
     </cfscript>
    <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\admin\#name#" output="#adminini#" addnewline="no">
   </cfloop>
 
   <cfcatch type="Any">
    <cfset success = false>
    <cfoutput>#cfcatch.message#<br>#cfcatch.detail#<p></cfoutput>
    <cfset bErrorsExist = true>
    <cfrethrow>
   </cfcatch>
  </cftry>
  <cfscript>
   startOdbcService();
  </cfscript>
</cffunction>

<!--- todo: remove --->
<cffunction name="upgradeOdbcService" access="private" output="false" hint="Upgrade ODBC service.">
  <cfargument name="odbcserver" default="#getSlsServerServiceName()#" required="false" hint="Name of ODBC server service.">
  <cfargument name="odbcagent" default="#getSlsAgentServiceName()#" required="false" hint="Name of ODBC agent service.">
  <cfset var success = true>

  <cftry>
   <!-- ODBC Server stuff -->
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcserver#" ServiceName "#arguments.odbcserver#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcserver#" ServiceDescription "#arguments.odbcserver#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcserver#" DataModel "#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcserver#" LoggingPath "#server.coldfusion.rootdir#\db\slserver54\logging"'></cfexecute>

   <!--- :: ODBC agent :: --->
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcagent#" ServiceName "#arguments.odbcagent#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcagent#" ServiceDescription "#arguments.odbcagent#"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcagent#" DataModel "#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcagent#" LoggingPath "#server.coldfusion.rootdir#\db\slserver54\logging"'></cfexecute>
   <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\SequeLink Setup\CFServiceController.exe" arguments='/P "#arguments.odbcagent#" Agent " "'></cfexecute>
 
 
   <cfcatch type="Any">
    <cfset success = false>
    <cfoutput>#cfcatch.message#<br>#cfcatch.detail#<p></cfoutput>
    <cfset bErrorsExist = true>
    <cfrethrow>
   </cfcatch>
  </cftry>
 
 
  <!--- :: create directories :: --->
  <cftry>
   <cfif not DirectoryExists("#server.coldfusion.rootdir#\db\slserver54\logging")>
    <cfdirectory action="CREATE" directory="#server.coldfusion.rootdir#\db\slserver54\logging">
   </cfif>
   <cfif not DirectoryExists("#server.coldfusion.rootdir#\db\slserver54\tracing")>
    <cfdirectory action="CREATE" directory="#server.coldfusion.rootdir#\db\slserver54\tracing">
   </cfif>
 
   <cfcatch type="Any">
    <cfset success = false>
    <cfoutput>#cfcatch.message#<br>#cfcatch.detail#<p></cfoutput>
    <cfset bErrorsExist = true>
    <cfrethrow>
   </cfcatch>
  </cftry>

  <!--- Configure the SequeLink Inifiles --->
  <cftry>
    <!--- :: REPLACE strings in INI :: --->
    <cffile action="READ" file="#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini" variable="swandmini">
     <cfscript>
      setprofileString("#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini", "SWANDM", "SWANDM", "");
      swandmini = replaceNoCase(swandmini, "DataSourceProviderTypesFile=C:\Neo\db\slserver54\bin\swsoc.ini", "DataSourceProviderTypesFile=#server.coldfusion.rootdir#\db\slserver54\bin\swsoc.ini", "ALL");
      swandmini = replaceNoCase(swandmini, "C:\Program Files\DataDirect", "#server.coldfusion.rootdir#\db", "ALL");
      swandmini = replaceNoCase(swandmini, arguments.odbcserver, "ColdFusion 8 ODBC Server", "ALL");
      swandmini = replaceNoCase(swandmini, arguments.odbcagent, "ColdFusion 8 ODBC Agent", "ALL");
      if( license.getServerType() neq license.SERVERTYPE_STANDALONE )
      {
      //replace the name of this dll for the j2ee version.
       swandmini = replaceNoCase(swandmini, "cmgss_an.dll", "cmgss_sp.dll", "ALL");
      }
     </cfscript>
    <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\cfg\swandm.ini" output="#swandmini#" addnewline="no">
 
    <cffile action="READ" file="#server.coldfusion.rootdir#\db\slserver54\admin\swcla.ini" variable="swclaini">
     <cfscript>
      swclaini = replaceNoCase(swclaini, "C:\Program Files\DataDirect", "#server.coldfusion.rootdir#\db", "ALL");
     </cfscript>
    <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\admin\swcla.ini" output="#swclaini#" addnewline="no">
 
    <cffile action="READ" file="#server.coldfusion.rootdir#\db\slserver54\bin\slxperf.ini" variable="slxperf">
     <cfscript>
      slxperf = replaceNoCase(slxperf, "C:\Program Files\DataDirect", "#server.coldfusion.rootdir#\db", "ALL");
     </cfscript>
    <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\bin\slxperf.ini" output="#slxperf#" addnewline="no">
 
 
   <cfdirectory action="LIST" directory="#server.coldfusion.rootdir#\db\slserver54\admin" name="batfiles" filter="*.bat">
   <cfloop query="batfiles">
    <cffile action="READ" file="#server.coldfusion.rootdir#\db\slserver54\admin\#name#" variable="adminini">
     <cfscript>
      adminini = replaceNoCase(adminini, arguments.odbcserver, "ColdFusion 8 ODBC Server", "ALL");
      adminini = replaceNoCase(adminini, arguments.odbcagent, "ColdFusion 8 ODBC Agent", "ALL");
     </cfscript>
    <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\admin\#name#" output="#adminini#" addnewline="no">
   </cfloop>
 
 
<!--- :: japanese specific mod :: --->  
   <cfif isDefined("request.locale") and (request.locale is "ja" or request.locale is "ko" or request.locale is "zh")>
    <cfset startODBCService()>
    <cfexecute timeout="30" name="#server.coldfusion.rootdir#\db\slserver54\admin\swcla.exe" arguments="-l saa '#arguments.odbcserver#' ServiceCodePage OS"></cfexecute>
    <cfset stopODBCService()>
    <cfset startODBCService()>
   </cfif>
 
 
   <cfcatch type="Any">
    <cfset success = false>
    <cfoutput>#cfcatch.message#<br>#cfcatch.detail#<p></cfoutput>
    <cfset bErrorsExist = true>
    <cfrethrow>
   </cfcatch>
  </cftry>
  <cfreturn success>
</cffunction>

<!---
/**
* Creates a batch file and calls that to update the odbc server.
* This replaces the calls the sl54Add|sl54mod|sl54disp|sl54mlog
* @return Returns a string, the output from the batch command
* @author Mike Nimer (mnimer@macromedia.com)
* @version 1,  5/6/2003
*/
--->
<cffunction name="updateODBCServerDSN" access="private" output="false" hint="Updates an ODBC server data source name.">
<cfargument name="dsn" required="true" hint="Name that ColdFusion uses to connect to the data source.">
<cfargument name="odbcdsn" required="true" hint="The ODBC data source name to which ColdFusion is to connect.">
<cfargument name="connectstring" required="true" hint="Passes database-specific parameters, such as login credentials, to the data source.">
<cfargument name="TimeStampAsString" required="true" hint="Enable this setting if your application retrieves Date/Time data and then re-uses it in SQL statements without applying formatting (using functions such as DateFormat, TimeFormat, and CreateODBCDateTime). Specify True or False.">
<cfargument name="LOGONMETHOD" required="true" hint="Internal method called to the register the database.">
<cfset var servicename = getSlsServerServiceName()>

<cfoutput>
<cfsavecontent variable="inpfile">
alc
dsd '#ServiceName#' '#arguments.dsn#'
dsc '#servicename#' '#arguments.dsn#'
dsad '#servicename#' '#arguments.dsn#' DataSourceSOCODBCConnStr
dsaa '#servicename#' '#arguments.dsn#' DataSourceSOCODBCConnStr dsn='#arguments.odbcdsn##iif(len(trim(arguments.connectstring)), de(";#arguments.connectstring#"), de(""))#'
dsaa '#servicename#' '#arguments.dsn#' DataSourceFetchTimeStampAsString #yesNoFormat(arguments.TimeStampAsString)#
dsar '#servicename#' '#arguments.dsn#' DataSourceLogonMethod #arguments.logonmethod#
dsi '#servicename#' '#arguments.dsn#'
cc
</cfsavecontent>
</cfoutput>
  <cflock name="inp" timeout="30">
   <cffile action="WRITE" file="#server.coldfusion.rootdir#\db\slserver54\admin\#arguments.dsn#.inp" output="#inpfile#" addnewline="Yes">
  </cflock>
 
  <cflock name="inp" timeout="30">
   <CFEXECUTE
    NAME='#server.coldfusion.rootdir#\db\slserver54\admin\swcla.exe'
    ARGUMENTS="-i #server.coldfusion.rootdir#\db\slserver54\admin\#arguments.dsn#.inp" timeout="60" variable="execoutput"></CFEXECUTE>
   <!--- :: <cfoutput>#execoutput#</cfoutput> :: --->
  </cflock>
<cfreturn execoutput>
</cffunction>

<!--- this template calls the sequelink agent to add
a datasource to the sequelink configuration and --->
<!--- to add a odbc connect string for the datasource to sequelink configuration. --->
<!--- Neo MSAccess and ODBC Socket data sources are registered in the sequelink configuration. --->
<!--- this template assumes the Neo install directory is C:\Neo, this should be written to determine --->
<!--- the install directory and consstruct the executable path accordingly --->
<cffunction name="sl54Add" access="private" output="false" roles="admin" hint="Adds a datasource to the SequeLink configuration.">
  <cfargument name="dsn" required="Yes" hint="Name that ColdFusion uses to connect to the data source.">
  <cfargument name="odbcdsn" required="Yes" hint="Name of the ODBC data source that ColdFusion is to connect to.">
  <cfargument name="connectString" required="No" hint="Passes database-specific parameters, such as login credentials, to the data source.">
  <cfargument name="TimeStampAsString" default="no" required="No" type="boolean" hint="Enable this setting if your application retrieves Date/Time data and then re-uses it in SQL statements without applying formatting (using functions such as DateFormat, TimeFormat, and CreateODBCDateTime). Specify True or False.">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
  <cfset var path = getSlsServerPath()>

  <cfsilent>
   <cfif isDefined("arguments.connectstring") and len(arguments.connectstring)>
    <cfset odbcconnectstring = arguments.odbcdsn & ";" & arguments.connectstring>
   <cfelse>
    <cfset odbcconnectstring = arguments.odbcdsn>
   </cfif>
   <!--- :: <cfdump var="#path#\admin\swcla.exe -l dsc '#odbcserver#' '#arguments.dsn#'"><br>
   <cfdump var="#path#\admin\swcla.exe -l dsar '#odbcserver#' '#arguments.dsn#' DataSourceSOCODBCConnStr dsn='#odbcconnectstring#'"><br> :: --->
   <cfexecute name="#path#\admin\swcla.exe" arguments="-l dsc '#odbcserver#' '#arguments.dsn#'" timeout="0"></cfexecute>
   <!--- Need to sleep for a few seconds so that the first command can complete before the next one is kicked off --->
   <cfscript>sleep(3000);</cfscript>
   <CFEXECUTE NAME="#path#\admin\swcla.exe" ARGUMENTS="-l dsad '#odbcserver#' '#arguments.dsn#' DataSourceSOCODBCConnStr" timeout="0"></CFEXECUTE>
   <CFEXECUTE NAME="#path#\admin\swcla.exe" ARGUMENTS="-l dsaa '#odbcserver#' '#arguments.dsn#' DataSourceSOCODBCConnStr dsn='#odbcconnectstring#'" timeout="0"></CFEXECUTE>
   <cfscript>sleep(2000);</cfscript>
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsad '#odbcserver#' '#arguments.dsn#' DataSourceFetchTimeStampAsString" timeout="0"></CFEXECUTE>
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsaa '#odbcserver#' '#arguments.dsn#' DataSourceFetchTimeStampAsString #yesNoFormat(arguments.TimeStampAsString)#" timeout="0"></CFEXECUTE>
  </cfsilent>
</cffunction>

<!--- this template calls the sequelink agent to remove a datasource from the sequelink configuration. --->
<!--- Neo MSAccess and ODBC Socket data sources are registered in the sequelink configuration. --->
<!--- this template assumes the Neo install directory is C:\Neo, this should be written to determine --->
<!--- the install directory and consstruct the executable path accordingly --->
<cffunction name="sl54Del" access="private" output="false" roles="admin" hint="Removes a data source from the SequeLink configuration.">
  <cfargument name="dsn" required="Yes" hint="Name that ColdFusion uses to connect to the data source.">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
  <cfset var path = getSlsServerPath()>

  <cfsilent>
   <!--- :: <cfdump var="#path#\admin\swcla.exe -l dsd '#odbcserver#' '#arguments.dsn#'"><br> :: --->
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsd '#odbcserver#' '#arguments.dsn#'" timeout="0"></CFEXECUTE>
   <cfscript>sleep(2000);</cfscript>
  </cfsilent>
</cffunction>

<!--- this template calls the sequelink agent to  --->
<!--- to modify a odbc connect string for the datasource to sequelink configuration. --->
<!--- Neo MSAccess and ODBC Socket data sources are registered in the sequelink configuration. --->
<!--- this template assumes the Neo install directory is C:\Neo, this should be written to determine --->
<!--- the install directory and consstruct the executable path accordingly --->
<cffunction name="sl54mod" access="private" output="false" roles="admin" hint="Modifies an ODBC data source connection string in the SequeLink configuration.">
  <cfargument name="dsn" required="Yes" hint="Name that ColdFusion uses to connect to the data source.">
  <cfargument name="odbcdsn" required="Yes" hint="Name of the ODBC data source that ColdFusion is to connect to.">
  <cfargument name="connectString" required="No" hint="Passes database-specific parameters, such as login credentials, to the data source.">
  <cfargument name="TimeStampAsString" default="no" required="No" type="boolean" hint="Enable this setting if your application retrieves Date/Time data and then re-uses it in SQL statements without applying formatting (using functions such as DateFormat, TimeFormat, and CreateODBCDateTime). Specify True or False.">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
  <cfset var path = getSlsServerPath()>

  <cfsilent>
   <cfif isDefined("arguments.connectstring") and len(arguments.connectstring)>
    <cfset odbcconnectstring = arguments.odbcdsn & ";" & arguments.connectstring>
   <cfelse>
    <cfset odbcconnectstring = arguments.odbcdsn>
   </cfif>
  
   <!--- :: <cfdump var="#path#\admin\swcla.exe -l dsar '#odbcserver#' '#arguments.dsn#' DataSourceSOCODBCConnStr dsn='#odbcconnectstring#'"><br> :: --->
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsad '#odbcserver#' '#arguments.dsn#' DataSourceSOCODBCConnStr" timeout="0"></CFEXECUTE>
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsaa '#odbcserver#' '#arguments.dsn#' DataSourceSOCODBCConnStr dsn='#odbcconnectstring#'" timeout="0"></CFEXECUTE>
   <!--- :: delete and readd attribute - we do this instead of update because it might not exist. :: --->
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsad '#odbcserver#' '#arguments.dsn#' DataSourceFetchTimeStampAsString" timeout="0"></CFEXECUTE>
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsaa '#odbcserver#' '#arguments.dsn#' DataSourceFetchTimeStampAsString #yesNoFormat(arguments.TimeStampAsString)#" timeout="0"></CFEXECUTE>
  </cfsilent>
</cffunction>

<!--- this template calls the sequelink agent to add a datasource to the sequelink configuration and --->
<!--- to add a odbc connect string for the datasource to sequelink configuration. --->
<!--- Neo MSAccess and ODBC Socket data sources are registered in the sequelink configuration. --->
<!--- this template assumes the Neo install directory is C:\Neo, this should be written to determine --->
<!--- the install directory and consstruct the executable path accordingly --->
<cffunction name="sl54displ" access="private" output="false" roles="admin">
  <cfargument name="dsn" required="Yes">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
  <cfset var path = getSlsServerPath()>

  <cfsilent>
   <!--- :: <cfdump var="#path#\admin\swcla.exe -l dsi '#odbcserver#' '#arguments.dsn#'"><br> :: --->
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsi '#odbcserver#' '#arguments.dsn#'" timeout="0"></CFEXECUTE>
  </cfsilent>
</cffunction>

<!--- this template calls the sequelink agent to  --->
<!--- to modify the DBMS Logon for the datasource to sequelink configuration. --->
<!--- Neo MSAccess and ODBC Socket data sources are registered in the sequelink configuration. --->
<!--- this template assumes the Neo install directory is C:\Neo, this should be written to determine --->
<!--- the install directory and consstruct the executable path accordingly --->
<!--- there are two possible settings: 1. DBMSLOGON(UID,PWD) - the default value and used when Anonymous is not checked in the admin --->
<!--- 2. OSIntegrated - used when Anonymous is checked, since the SequeLink server is running under anonymous, this requires specific --->
<!--- user.  Many Access users will configure datasources this way.  This means that no additional username/password is passed --->
<!--- from the sequelink server to the odbc driver so sufficent information must be specified in the odbc.ini registry for --->
<!--- the connection --->

<!--- if ANONYMOUS is checked, LOGONMETHOD="OSIntegrated" - admin should put empty strings in username and password and make the form fields read only --->
<!--- if ANONYMOUS is not checked, LOGONMETHOD="DBMSLogon(UID,PWD)   - admin handles username and password same as in beta3 --->
<cffunction name="sl54mlog" access="private" output="false" roles="admin" hint="Modifies the DBMS logon for the data source to SequeLink configuration.">
  <cfargument name="odbcdsn" required="Yes" hint="Name of the ODBC data source that ColdFusion is to connect to.">
  <cfargument name="logonmethod" default="OSIntegrated" required="No" hint="When anonymous: OSIntegrated; when not anonymous DBMSLOGON(userid, password)">
  <cfset var odbcserver = getSlsServerServiceName()>
  <cfset var odbcagent = getSlsAgentServiceName()>
  <cfset var path = getSlsServerPath()>

  <cfsilent>
   <!--- :: <cfdump var="#path#\admin\swcla.exe -l dsar '#odbcserver#' '#arguments.odbcdsn#' DataSourceLogonMethod #arguments.logonmethod#"> :: --->
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsad '#odbcserver#' '#arguments.odbcdsn#' DataSourceLogonMethod" timeout="0"></CFEXECUTE>
   <CFEXECUTE NAME='#path#\admin\swcla.exe' ARGUMENTS="-l dsaa '#odbcserver#' '#arguments.odbcdsn#' DataSourceLogonMethod #arguments.logonmethod#" timeout="0"></CFEXECUTE>
   <cfscript>sleep(2000);</cfscript>
  </cfsilent>
</cffunction>

 
<!--- ::
Utility Methods
:: --->
<!---
/**
* Verify a given dsn
* @param -
* @return Returns a boolean if added successfully.
* @author Mike Nimer (mnimer@macromedia.com)
* @version 1,  3/6/2002
*/ --->
<cffunction name="verifyDsn" output="false" access="public" returntype="Any" hint="Verifies a given data source name.">
  <cfargument name="dsn" required="true" hint="Name that ColdFusion uses to connect to the data source.">
  <cfargument name="returnMsgOnError" type="boolean" required="false" default="false" hint="The function returns the error message on any error if this parameter is true">
        <cfset var accessmanager = createObject("component", "CFIDE.adminapi.accessmanager")>
  <cfset accessmanager.checkAdminRoles("coldfusion.datasources")>
  <cftry>
   <cflock name="cfadmin_sqlexecutive" timeout="30" type="READONLY">
    <cfset success = dsnService.verifyDatasource(arguments.dsn)>
   </cflock>

   <cfcatch type="Any">
    <cfset success = false>
    <cfif arguments.returnMsgOnError>
     <cfreturn #cfcatch.Message#>
    </cfif>
   </cfcatch>
  </cftry>
 
  <cfreturn success>
</cffunction>

<!--- /**
* Format The jdbc URL, it takes one of the following forms.
* jdbc:sequelink:odbcsocket://host:port
* jdbc:sequelink:odbcsocket://host:port;arg1=val1;arg2=val2 
* jdbc:sequelink:odbcsocket://host:port;serverDatasource=datasource
* jdbc:sequelink:odbcsocket://host:port;serverDatasource=datasource;arg1=val1;arg2=val2
*
* odbcSocket defaultURL: jdbc:sequelink:odbcsocket://[host]:[port];serverDatasource=[datasource];[args]
* access defaultURL: jdbc:sequelink:odbcsocket://[host]:[port];serverDatasource=[datasource];[args]
* db2 defaultURL: jdbc:macromedia:db2://[host]:[port];databaseName=[database];[args]
* db2 OS/390 default URL: jdbc:macromedia:db2://host:port;arg1=val2;ar2=val2
* informix: jdbc:macromedia:informix://[host]:[port];informixServer=[informix_server];DatabaseName=[database]
*
* @param - host (ip or url)
* @param - port (int)
* @param - dsn (dsn name)
* @param - semi-colon seperated args list
* @return Returns an array.
* @author Mike Nimer (mnimer@macromedia.com)
* @version 1,  3/6/2002
*/ --->
<cffunction name="formatJdbcURL" access="private" output="false" hint="Formats the JDBC URL.">
  <cfargument name="driver" required="true" hint="JDBC driver.">
  <cfargument name="host" required="false" hint="Machine to connect to.">
  <cfargument name="port" required="false" hint="Port number on which the server is listening." >
  <cfargument name="dsn" required="false" hint="Name that ColdFusion uses to connect to the data source.">
  <cfargument name="database" required="false" hint="Name of database to access.">
  <cfargument name="datasource" required="false" hint="Actual name of data source.">
  <cfargument name="args" required="false" hint="Semicolon-separated list of arguments.">
  <cfargument name="informixServer" required="false" hint="Informix server name.">
  <cfargument name="selectMethod" required="false" hint="Name of method for SELECT statement.">
  <cfargument name="SID" required="false" hint="Database system ID name.">
  <cfargument name="MaxPooledStatements" required="false" hint="Maximum number of database statements to pool.">
  <cfargument name="isnewdb" required="false">
   <!--- /// get defaults /// --->
   <cfset var stDriver = dsnService.drivers[driver]>
   <!--- /// get default URL /// --->
   <cfset var thisURL = stDriver.url>
  
   <cfinclude template="_datasource/formatjdbcurl.cfm">
  <cfreturn newURL>
</cffunction>
 


<!--- /**
  * set the dsn defaults to the arguments scope that is passed in
  *
  * @param - scope any struct (user defined, form, url, etc)
  * @return Returns the update scope.
  * @author Mike Nimer (mnimer@macromedia.com)
  * @version 1,  3/6/2002
  */ --->
<cffunction name="getNewDSNDefaults" access="private" output="false" hint="Gets the data source defaults to the arguments scope that is passed in.">
  <cfargument name="scope" required="true" hint="Scope - Any structure (user-defined, form, URL, etc.)">

  <cfparam name="arguments.scope.username" default="">
  <cfparam name="arguments.scope.password" default="">
  <cfparam name="arguments.scope.description" default="">
  <cfparam name="arguments.scope.url" default="">

   <cfparam name="arguments.scope.urlmap.host" default="">
   <cfparam name="arguments.scope.urlmap.port" default="">
   <cfparam name="arguments.scope.urlmap.database" default="">
   <cfparam name="arguments.scope.urlmap.args" default="">
   <cfparam name="arguments.scope.urlmap.informixServer" default="">
   <cfparam name="arguments.scope.urlmap.selectMethod" default="direct">
   <cfparam name="arguments.scope.urlmap.SID" default="">
   <cfparam name="arguments.scope.urlmap.defaultusername" default="">
   <cfparam name="arguments.scope.urlmap.defaultpassword" default="">
   <cfparam name="arguments.scope.urlmap.maxBufferSize" default="">
   <cfparam name="arguments.scope.urlmap.databaseFile" default="">
   <cfparam name="arguments.scope.urlmap.systemDatabaseFile" default="">
   <cfparam name="arguments.scope.urlmap.pageTimeout" default="">
   <cfparam name="arguments.scope.urlmap.datasource" default="">
   <cfparam name="arguments.scope.urlmap.UseTrustedConnection" default="false">
   <cfparam name="arguments.scope.urlmap.sendStringParametersAsUnicode" default="false">
   <cfparam name="arguments.scope.urlmap.TimeStampAsString" default="no">
   <cfparam name="arguments.scope.urlmap.MaxPooledStatements" default="1000">
   <cfparam name="arguments.scope.urlmap.isnewdb" default="false">
   <cfparam name="arguments.scope.validationQuery" default="">
 
  <cfreturn arguments.scope>
</cffunction>

 
<!--- /**
  * set the cfsetting defaults to the arguments scope that is passed in
  *
  * @param - scope any struct (user defined, form, url, etc)
  * @return Returns the update scope.
  * @author Mike Nimer (mnimer@macromedia.com)
  * @version 1,  3/6/2002
  */ --->
<cffunction name="getCFSettingDefaults" access="private" output="false" hint="Gets the cfsetting defaults to the arguments scope that is passed.">
  <cfargument name="scope" required="true" hint="Scope - any structure (user-defined, form, URL, etc.)">

  <cfscript>
   ///////////////////////////////////////////////
   //cfsetting Defaults
   if(IsDefined("dsnService.defaults"))
    { stDefaults = dsnService.defaults; }
   else
    { stDefaults = StructNew(); }
  
   //loop over and set defaults to stDsn.scope
   for( key in stDefaults )
    { arguments.scope[key] = stDefaults[key]; }
  </cfscript>
 
  <cfreturn arguments.scope>
</cffunction>



<!--- /**
  * set the driver defaults to the arguments scope that is passed in
  *
  * @param - scope any struct (user defined, form, url, etc)
  * @return Returns the update scope.
  * @author Mike Nimer (mnimer@macromedia.com)
  * @version 1,  3/6/2002
  */ --->
<cffunction name="getDriverDefaults" access="private" output="false" hint="Gets the driver defaults to the arguments scope that is passed in.">
  <cfargument name="scope" required="true" hint="Scope - any structure (user-defined, form, URL, etc.)">

  <cfscript>
  //////////////////////////////////////////////
  //driver Defaults
   if( structKeyExists(dsnService.drivers, arguments.scope.driver) )
   {
    if(IsDefined("dsnService.drivers"))
     { stDriver = dsnService.drivers[arguments.scope.driver]; }
    else
     { stDriver = StructNew(); }
    //loop over and set values to stDsn.scope
    for( key in stDriver )
     { arguments.scope[key] = stDriver[key]; }
   }
  </cfscript>
 
  <cfreturn arguments.scope>
</cffunction>



<!--- /**
  * set the dsn defaults to the arguments scope that is passed in
  *
  * @param - scope any struct (user defined, form, url, etc)
  * @return Returns the update scope.
  * @author Mike Nimer (mnimer@macromedia.com)
  * @version 1,  3/6/2002
  */ --->
<cffunction name="getDatasourceDefaults" access="private" output="false" hint="Gets the DSN defaults to the arguments scope that is passed in.">
  <cfargument name="scope" required="true" hint="Scope - any structure (user-defined, form, URL, etc.)">
  <cfargument name="dsn" required="true" hint="Data source name.">
  <cfset var stDatasource = structNew()>

  <cfscript>
   arguments.scope['dsn'] = arguments.dsn;
   ///////////////////////////////////////////////
   //override defaults with dsn specific data
   if(IsDefined("dsnService.datasources") and structKeyExists(dsnService.datasources, arguments.dsn))
    { stDatasource = duplicate(dsnService.datasources[arguments.dsn]) ; }

   //loop over and set values to stDsn.scope
   for( key in stDatasource )
   {
    if( structKeyExists(arguments.scope, key) )
    {
     arguments.scope[key] = stDatasource[key];
    }
   } 
  </cfscript>

  <cfreturn arguments.scope>
</cffunction>



<!--- /**
  * set the dsn defaults to the arguments scope that is passed in
  *
  * @param - scope any struct (user defined, form, url, etc)
  * @return Returns the update scope.
  * @author Mike Nimer (mnimer@macromedia.com)
  * @version 1,  3/6/2002
  */ --->
<cffunction name="getURLDefaults" access="private" output="false" hint="Returns URL default values.">
  <cfargument name="scope" required="true" hint="Arguments scope to receive URL default values.">
  <cfargument name="driver" default="" required="false" hint="Driver name,">
  <cfargument name="delims" required="true" hint="Delimiters.">

   <cfinclude template="_datasource/geturldefaults.cfm">
  <cfreturn arguments.scope>
</cffunction>




<!---
/**
  *
  */
--->
<cffunction name="getAccessDefaultsFromRegistry" access="private" output="false" hint="Retrieves Microsoft Access default values from Windows registry.">
  <cfargument name="scope" required="true" hint="Arguments scope to receive default values.">
  <cfargument name="dsn" required="true" hint="Name that ColdFusion uses to connect to the data source.">
  <cfset var Branch_ODBCINI  = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI">
  <cfset var Branch_ODBCDS   = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources">
  <cfset var Branch_ODBCINST = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI">

   <cfinclude template="_datasource/getaccessdefaultsfromregistry.cfm">
  <cfreturn arguments.scope>
</cffunction>



<!---
/**
  * return the file path/filename of the odbc sequllink ini file
  *
  * @param - inifile = use the get cfadmin_getSlServerIni() function to get this.
  * @return Returns a string.
  * @author Mike Nimer (mnimer@macromedia.com)
  * @version 1,  January 12, 2002
  */
--->
<cffunction name="getSlsServerPath" output="false" access="private" returnType="String" hint="Returns the path/filename of the ODBC Sequelink INI file.">
  <cfset thisfile = Replace("#server.coldfusion.rootdir#\db\slserver54", "/" ,"\")>
  <cfreturn thisfile>
</cffunction>
<!---
/**
  * return the CFMX ODBC Server service name
  *
  * @return Returns a string
  * @author Trevor Baker (tbaker@macromedia.com)
  * @version 1,  April 2, 2003
  */
--->
<cffunction name="getSlsServerServiceName" output="false" access="private" returnType="String" hint="Returns the ODBC Server service name.">
  <cfscript>
   iniPath = "#getSlsServerPath()#\cfg\swandm.ini";
   SLServiceName = GetProfileString(iniPath, "Service_1", "ServiceName");
   // this shouldn't happen, but we'll default to "ColdFusion 8 ODBC Server" just incase
   if (len(SLServiceName) eq 0) {
    SLServiceName = "ColdFusion 8 ODBC Server";
   }
  </cfscript>
  <cfreturn SLServiceName>
</cffunction>
<!---
/**
  * sets a new sequellink service name
  *
  * @return Returns a string
  * @author Trevor Baker (tbaker@macromedia.com)
  * @version 1,  April 2, 2003
  */
--->
<cffunction name="setSlsServerServiceName" output="false" access="private" returnType="String" hint="Adds a new SequeLink service name">
  <cfargument name="serviceName" required="true" hint="SequeLink service name">
  <cfscript>
   iniPath = "#getSlsServerPath()#\cfg\swandm.ini";
   SLServiceName = setProfileString(iniPath, "Service_1", "ServiceName", arguments.serviceName);
  </cfscript>
  <cfreturn getSlsServerServiceName()>
</cffunction>
<!---
/**
  * return the CFMX ODBC Server Agent name
  *
  * @return Returns a string
  * @author Trevor Baker (tbaker@macromedia.com)
  * @version 1,  April 2, 2003
  */
--->
<cffunction name="getSlsAgentServiceName" output="false" access="private" returnType="String" hint="Returns the name of the ODBC server agent.">
  <cfreturn replace(getSlsServerServiceName(), "Server", "Agent", "all")>
</cffunction>

</cfcomponent>

You can restore C:\JRun4\servers\default\cfusion-ear\cfusion-war\CFIDE\adminapi\datasource.cfc as you will when ODBC Service and Agent are successfully installed.

For further info refer to https://forums.adobe.com/thread/62441

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources