Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'   sdk_opr_json.asp
'   Ajax support for SDK operations
'       addNew          - New SDK Name
'       updateEntry     - Update Sdk Name
'       getData         - Get single Sdk Name Entry
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0   ' always load the page, dont store
%>
<!--#include file="common/conf.asp"-->
<!--#include file="common/globals.asp"-->
<!--#include file="common/qstr.asp"-->
<!--#include file="common/common_subs.asp"-->
<!--#include file="_access_control_general.asp"-->
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
<%
'------------ Variable Definition -------------
Dim parOpr
Dim result
Dim SqlQry
Dim rsQry

parOpr = QStrPar("action")
result = -1

' Init the output JSON class
'   Operations can add data
'   Default data will be added at the end
Dim oJSON
Set oJSON = New aspJSON
Dim newitem

Function canModify
    canModify = objAccessControl.IsActive("CreateNewProject")
    If NOT canModify Then
        result = -4
        oJSON.data("error") = 1
        oJSON.data("emsgSummary") = "Permission denied"
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
    End If
End Function

'   
'   Perform the body of the operations within a Sub and use
'   On Error Resule Next to catch errors that accur in the code
'
On Error Resume Next
If (parOpr = "addNew") Then
    If canModify() Then addNewEntry

ElseIf (parOpr = "getData") Then
     getData

ElseIf (parOpr = "updateEntry") Then
    If canModify() Then updateEntry

Else
    oJSON.data("error") = 1
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
    oJSON.data("emsgDetails") = "The Requested JSON operation is not supported: " & parOpr
End If


' SQL error detection and reporting
If objEH.LastOraFailed Then
    oJSON.data("error") = 1
    result = -1

    oJSON.data("emsgSummary") = objEH.MessageSummary
    oJSON.data("emsgDetails") = objEH.MessageDetails
    oJSON.data("SqlQry") = SqlQry
'
'   Detect program errors
ElseIf Err.number <> 0 Then
    result = -3
    oJSON.data("error") = 2
    oJSON.data("errnum") = Err.number
    oJSON.data("errtxt") = Err.description
    oJSON.data("errsrc") = Err.source
    oJSON.data("emsgSummary") = "Internal VBScript Error:" & Err.number &  ":" & Err.description
End If

'Write single value
oJSON.data("result") = result

'function Sleep(seconds)
'    dim oshell, cmd
'    set oShell = CreateObject("Wscript.Shell")
'    cmd = "cmd.exe /c timeout " & seconds & " /nobreak"
'    oShell.Run cmd,0,1
'End function
'
'Sleep(2)


' DEBUG: A Hash of the user provided requests
<!--oJSON.data("QueryString") = Request.QueryString       -->
<!--                                                      -->
<!--Dim requestSet : Set requestSet = oJSON.Collection()  -->
<!--Set oJSON.data("Request") = requestSet                -->
<!--Dim variableName                                      -->
<!--for each variableName in Request.QueryString          -->
<!--    requestSet.add variableName, Request(variableName)-->
<!--next                                                  -->
<!--for each variableName in Request.Form                 -->
<!--    requestSet.add variableName, Request(variableName)-->
<!--next                                                  -->


'Return the object
Response.Write oJSON.JSONoutput()
%>
<%
'-------------------------------------------------
' Function:    addNewEntry
' Description: Create a new SDK Name entry
Sub addNewEntry

    '   Add a new entry
    '
    '   Setup for the database access
    OraDatabase.Parameters.Add "SDKNAME",    QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2
    OraDatabase.Parameters.Add "SDKCOMMENT", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2

     '  Test existance - simply to provide a Nice Error message
    SqlQry = "SELECT * FROM SDK_NAMES WHERE SDK_NAME = :SDKNAME"
    objEH.ErrorRedirect = FALSE
    objEH.TryORA ( OraSession )
    On Error Resume Next
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
    objEH.CatchORA ( OraSession )
    On Error GoTo 0

    If rsQry.RecordCount <> 0 Then
        result = -3
        oJSON.data("error") = -1
        oJSON.data("emsgSummary") = "SDK Name already exists"
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
    Else

        SqlQry = "IaNSERT INTO SDK_NAMES (SDK_NAME, SDK_COMMENT) VALUES (:SDKNAME, :SDKCOMMENT)"
        objEH.ErrorRedirect = FALSE
        objEH.TryORA ( OraSession )
        On Error Resume Next
        OraDatabase.ExecuteSQL SqlQry
        objEH.CatchORA ( OraSession )
        On Error GoTo 0

        result = 0
    End If
    OraDatabase.Parameters.Remove "SDKCOMMENT"
    OraDatabase.Parameters.Remove "SDKNAME"
End Sub

'-------------------------------------------------
' Function:    getData
' Description: get data for a specified SDK Name
Sub getData

    '   Get Data for an existing entry
    '   Setup for the database access
    OraDatabase.Parameters.Add "SDKID",    QStrPar("sdkId"), ORAPARM_INPUT, ORATYPE_NUMBER

    SqlQry = "SELECT * from SDK_NAMES where SDK_ID=:SDKID"

    objEH.ErrorRedirect = FALSE
    objEH.TryORA ( OraSession )
    On Error Resume Next
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
    objEH.CatchORA ( OraSession )
    OraDatabase.Parameters.Remove "SDKID"

    Dim resultSet : Set resultSet = oJSON.Collection()
    If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
        Dim ii
        for ii = 0 to rsQry.Fields.Count - 1
            resultSet (rsQry.FieldName(ii)) = rsQry.Fields(ii)
        Next
        Set oJSON.data("aaData") = resultSet
        result = 0
    End If
    rsQry.Close
    Set rsQry = Nothing
End Sub

'-------------------------------------------------
' Function:    updateEntry
' Description: Update an exxisting SDK Names entry
Sub updateEntry

    '
    '
    OraDatabase.Parameters.Add "SDKID",      QStrPar("sdkId"), ORAPARM_INPUT, ORATYPE_NUMBER
    OraDatabase.Parameters.Add "SDKNAME",    QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2
    OraDatabase.Parameters.Add "SDKCOMMENT", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2

    '  Test existance - simply to provide a Nice Error message
    SqlQry = "SELECT * FROM SDK_NAMES WHERE SDK_NAME = :SDKNAME AND  SDK_ID != :SDKID"
    objEH.ErrorRedirect = FALSE
    objEH.TryORA ( OraSession )
    On Error Resume Next
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
    objEH.CatchORA ( OraSession )
    On Error GoTo 0

    If rsQry.RecordCount <> 0 Then
        result = -3
        oJSON.data("error") = -1
        oJSON.data("emsgSummary") = "SDK Name already exists"
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
    Else
        '   Update an existing entry
        SqlQry = "UPDATE SDK_NAMES SET SDK_NAME = :SDKNAME, SDK_COMMENT = :SDKCOMMENT WHERE SDK_ID = :SDKID"
        objEH.ErrorRedirect = FALSE
        objEH.TryORA ( OraSession )
        On Error Resume Next
        OraDatabase.ExecuteSQL SqlQry
        objEH.CatchORA ( OraSession )
        On Error GoTo 0
        result = 0
    End If

    OraDatabase.Parameters.Remove "SDKCOMMENT"
    OraDatabase.Parameters.Remove "SDKNAME"
    OraDatabase.Parameters.Remove "SDKID"
End Sub
%>