Subversion Repositories DevTools

Rev

Rev 6773 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'   _json_Replication.asp
'   Ajax support Package Replication Operations
'
'=====================================================
%>
<%
Option explicit
' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)
Response.ContentType = "text/html"
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
Response.CodePage = 65001
Response.CharSet = "UTF-8"
%>
<!--#include file="common/conf.asp"-->
<!--#include file="common/globals.asp"-->
<!--#include file="common/qstr.asp"-->
<!--#include file="common/common_subs.asp"-->
<% '------------ ACCESS CONTROL ------------------ %>
<!--#include file="_access_control_login_optional.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("Opr")

' 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 = canActionInProject()
    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

'
'   Prefill error indications
'   
result = -1
oJSON.data("emsgSummary") = "JSON Operation:" & parOpr
oJSON.data("emsgDetails") = "Internal Problem. Error not reported" 

'   
'   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 = "EnableProject") Then
    If canModify() Then EnableProject
ElseIf (parOpr = "RemoveProject") Then
    If canModify() Then RemoveProject
ElseIf (parOpr = "AddProject") Then
    If canModify() Then AddProject
ElseIf (parOpr = "EnableRelease") Then
    If canModify() Then EnableRelease
ElseIf (parOpr = "RemoveRelease") Then
    If canModify() Then RemoveRelease
ElseIf (parOpr = "AddRelease") Then
    If canModify() Then AddRelease

Else
    oJSON.data("error") = 1
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
    oJSON.data("emsgDetails") = "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:"
    oJSON.data("emsgDetails") = Err.number &  ":" & Err.description
End If
On error goto 0
'Write single value
oJSON.data("result") = result
If result = 0 Then
    oJSON.data.Remove("emsgSummary")
    oJSON.data.Remove("emsgDetails")
End If

'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()
Set oJSON = Nothing
Call Destroy_All_Objects
%>
<%
'-------------------------------------------------
' Function:    EnableProject
' Description: Set the enabled state of a Project Replica for a specified target
'              server_id - Id of the BLAT replica server
'              user_id - user_id requesting the operation
'              proj_id - proj_id of the project entry to modify
'              new_state - New state
Sub EnableProject

    Dim  parServerId : parServerId = QStrPar("server_id")
    Dim  parUserId : parUserId = QStrPar("user_id")
    Dim  parProjId : parProjId = QStrPar("proj_id")
    Dim  parState  : parState = QStrPar("new_state")

    If parServerId <> "" AND parUserId<> "" AND parProjId <> "" AND parState <> "" Then

        If parState <> "Y" and parState <> "N" Then
            oJSON.data("emsgSummary") = "EnableProject"
            oJSON.data("emsgDetails") = "Invalid State"
            Exit Sub
        End If

        objEH.ErrorRedirect = FALSE
        objEH.TryORA ( OraSession )
        On Error Resume Next

        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "PROJ_ID",           parProjId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "STATE",             parState,       ORAPARM_INPUT, ORATYPE_NUMBER

        SqlQry = "UPDATE BLAT_PROJECTS SET BP_ENABLED = :STATE where BLAT_ID = :SERVER_ID and PROJ_ID = :PROJ_ID"
        OraDatabase.ExecuteSQL SqlQry

        OraDatabase.Parameters.Remove "USER_ID_LIST"
        OraDatabase.Parameters.Remove "PROJ_ID"
        OraDatabase.Parameters.Remove "SERVER_ID"
        OraDatabase.Parameters.Remove "STATE"

        objEH.CatchORA ( OraSession )
        result = 0

    Else
        oJSON.data("emsgSummary") = "EnableProject"
        oJSON.data("emsgDetails") = "Insufficient arguments"
    End If

End Sub

'-------------------------------------------------
' Function:    RemoveProject
' Description: Remove a Project Replica for a specified target
'              server_id - Id of the BLAT replica server
'              user_id - user_id requesting the operation
'              proj_id - proj_id of the project entry to modify
Sub RemoveProject

    Dim  parServerId : parServerId = QStrPar("server_id")
    Dim  parUserId : parUserId = QStrPar("user_id")
    Dim  parProjId : parProjId = QStrPar("proj_id")

    If parServerId <> "" AND parUserId<> "" AND parProjId <> "" Then

        objEH.ErrorRedirect = FALSE
        objEH.TryORA ( OraSession )
        On Error Resume Next

        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "PROJ_ID",           parProjId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER

        SqlQry = "DELETE FROM BLAT_PROJECTS where BLAT_ID = :SERVER_ID and PROJ_ID = :PROJ_ID"
        OraDatabase.ExecuteSQL SqlQry

        OraDatabase.Parameters.Remove "USER_ID_LIST"
        OraDatabase.Parameters.Remove "PROJ_ID"
        OraDatabase.Parameters.Remove "SERVER_ID"

        objEH.CatchORA ( OraSession )
        result = 0

    Else
        oJSON.data("emsgSummary") = "EnableProject"
        oJSON.data("emsgDetails") = "Insufficient arguments"
    End If

End Sub

'-------------------------------------------------
' Function:    AddProject
' Description: Add a Project Replica for a specified target
'              server_id - Id of the BLAT replica server
'              user_id - user_id requesting the operation
'              proj_id - proj_id of the project entry to modify
Sub AddProject

    Dim  parServerId : parServerId = QStrPar("server_id")
    Dim  parUserId : parUserId = QStrPar("user_id")
    Dim  parProjId : parProjId = QStrPar("proj_id")

    If parServerId <> "" AND parUserId<> "" AND parProjId <> "" Then

        objEH.ErrorRedirect = FALSE
        objEH.TryORA ( OraSession )
        On Error Resume Next

        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "PROJ_ID",           parProjId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER

        SqlQry = "INSERT INTO BLAT_PROJECTS (BLAT_ID,proj_id) VALUES( :SERVER_ID, :PROJ_ID)"
        OraDatabase.ExecuteSQL SqlQry

        OraDatabase.Parameters.Remove "USER_ID_LIST"
        OraDatabase.Parameters.Remove "PROJ_ID"
        OraDatabase.Parameters.Remove "SERVER_ID"

        objEH.CatchORA ( OraSession )
        result = 0

    Else
        oJSON.data("emsgSummary") = "EnableProject"
        oJSON.data("emsgDetails") = "Insufficient arguments"
    End If

End Sub

'-------------------------------------------------
' Function:    EnableRelease
' Description: Set the enabled state of a Release Replica for a specified target
'              server_id - Id of the BLAT replica server
'              user_id - user_id requesting the operation
'              rtag_id - rtag_id of the release entry to modify
'              new_state - New state
Sub EnableRelease

    Dim  parServerId : parServerId = QStrPar("server_id")
    Dim  parUserId : parUserId = QStrPar("user_id")
    Dim  parRtagId : parRtagId = QStrPar("rtag_id")
    Dim  parState  : parState = QStrPar("new_state")

    If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" AND parState <> "" Then

        If parState <> "Y" and parState <> "N" Then
            oJSON.data("emsgSummary") = "EnableProject"
            oJSON.data("emsgDetails") = "Invalid State"
            Exit Sub
        End If

        objEH.ErrorRedirect = FALSE
        objEH.TryORA ( OraSession )
        On Error Resume Next

        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "RTAG_ID",           parRtagId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "STATE",             parState,       ORAPARM_INPUT, ORATYPE_NUMBER

        SqlQry = "UPDATE BLAT_RELEASES SET BR_ENABLED = :STATE where BLAT_ID = :SERVER_ID and RTAG_ID = :RTAG_ID"
        OraDatabase.ExecuteSQL SqlQry

        OraDatabase.Parameters.Remove "USER_ID_LIST"
        OraDatabase.Parameters.Remove "RTAG_ID"
        OraDatabase.Parameters.Remove "SERVER_ID"
        OraDatabase.Parameters.Remove "STATE"

        objEH.CatchORA ( OraSession )
        result = 0

    Else
        oJSON.data("emsgSummary") = "EnableProject"
        oJSON.data("emsgDetails") = "Insufficient arguments"
    End If

End Sub
'-------------------------------------------------
' Function:    RemoveRelease
' Description: Remove a Release Replica for a specified target
'              server_id - Id of the BLAT replica server
'              user_id - user_id requesting the operation
'              rtag_id - rtag_id of the release entry to modify
Sub RemoveRelease

    Dim  parServerId : parServerId = QStrPar("server_id")
    Dim  parUserId : parUserId = QStrPar("user_id")
    Dim  parRtagId : parRtagId = QStrPar("rtag_id")

    If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" Then

        objEH.ErrorRedirect = FALSE
        objEH.TryORA ( OraSession )
        On Error Resume Next

        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "RTAG_ID",           parRtagId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER

        SqlQry = "DELETE FROM BLAT_RELEASES where BLAT_ID = :SERVER_ID and RTAG_ID = :RTAG_ID"
        OraDatabase.ExecuteSQL SqlQry

        OraDatabase.Parameters.Remove "USER_ID_LIST"
        OraDatabase.Parameters.Remove "RTAG_ID"
        OraDatabase.Parameters.Remove "SERVER_ID"

        objEH.CatchORA ( OraSession )
        result = 0

    Else
        oJSON.data("emsgSummary") = "EnableProject"
        oJSON.data("emsgDetails") = "Insufficient arguments"
    End If

End Sub
'-------------------------------------------------
' Function:    AddRelease
' Description: Add a Release Replica for a specified target
'              server_id - Id of the BLAT replica server
'              user_id - user_id requesting the operation
'              rtag_id - rtag_id of the release entry to modify
Sub AddRelease

    Dim  parServerId : parServerId = QStrPar("server_id")
    Dim  parUserId : parUserId = QStrPar("user_id")
    Dim  parRtagId : parRtagId = QStrPar("rtag_id")

    If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" Then

        objEH.ErrorRedirect = FALSE
        objEH.TryORA ( OraSession )
        On Error Resume Next

        OraDatabase.Parameters.Add "USER_ID",           parUserId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "RTAG_ID",           parRtagId,      ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "SERVER_ID",         parServerId,    ORAPARM_INPUT, ORATYPE_NUMBER

        SqlQry = "INSERT INTO BLAT_RELEASES (BLAT_ID,rtag_id) VALUES( :SERVER_ID, :RTAG_ID)"
        OraDatabase.ExecuteSQL SqlQry

        OraDatabase.Parameters.Remove "USER_ID_LIST"
        OraDatabase.Parameters.Remove "RTAG_ID"
        OraDatabase.Parameters.Remove "SERVER_ID"

        objEH.CatchORA ( OraSession )
        result = 0

    Else
        oJSON.data("emsgSummary") = "EnableProject"
        oJSON.data("emsgDetails") = "Insufficient arguments"
    End If

End Sub

%>