View difference between Paste ID: cW0VQvxG and ynJJMZpW
SHOW: | | - or go back to the newest paste.
1-
local patentFile = "disk/patents.pat"
1+
local databaseFile = "disk/patents.skydb"
2-
local adminPassword = "PVSfVF"    
2+
local adminPassword = ""    
3-
3+
 
4
local function save(tbl,name)
5
    local file = fs.open(name,"w")
6
    file.write(textutils.serialise(tbl))
7
    file.close()
8
end
9-
9+
 
10
local function load(name)
11
    local file = fs.open(name,"r")
12
    local data = file.readAll()
13
    file.close()
14
    return textutils.unserialise(data)
15
end
16-
16+
 
17
local function centerText(text,y)
18
    local x,_ = term.getSize()
19
    local x = math.floor(x/2) - math.floor(string.len(text)/2)
20
    term.setCursorPos(x,y)
21
    term.write(text)
22
end
23-
23+
 
24-
patTable = load(patentFile)
24+
database = load(databaseFile)
25-
numPats = #patTable
25+
numData = #database
26
cpn = 1
27-
patentWriting = false
27+
dataWriting = false
28-
28+
 
29
local function checkCurNumber()
30-
    if cpn > numPats then cpn = numPats end
30+
    if cpn > numData then cpn = numData end
31
    if cpn < 1 then cpn = 1 end
32
end
33-
33+
 
34-
local function writePatent()
34+
local function writeData()
35
    patentWriting = true
36-
    newPatNum = numPats + 1
36+
    newDataNum = numData + 1
37
    term.clear()
38
    term.setCursorPos(1,1)
39
    term.write("Owner: ")
40-
    patentOwner = read()
40+
    dOwner = read()
41
    term.setCursorPos(1,2)
42
    term.write("Name: ")
43-
    patentName = read()
43+
    dName = read()
44
    term.setCursorPos(1,3)
45
    term.write("Description: ")
46-
    patentDesc = read()
46+
    dDesc = read()
47
    
48-
    patTable[newPatNum] = {owner = patentOwner,name = patentName,desc = patentDesc}
48+
    database[newDataNum] = {owner = dOwner,name = dName,desc = dDesc}
49
    patentWriting = false
50-
    save(patTable,patentFile)
50+
    save(database,patentFile)
51-
    numPats = #patTable
51+
    numData = #database
52
    term.clear()
53
end
54-
54+
 
55-
local function deletePatent(tbl,num)
55+
local function deleteData(tbl,num)
56
    dataWriting = true
57
    term.clear()
58
    term.setCursorPos(1,1)
59-
    term.write("Are you sure you want to delete this patent? (y/n)")
59+
    term.write("Are you sure you want to delete this data? (y/n)")
60
    term.setCursorPos(1,2)
61
    acceptance = read()
62
    if acceptance == "y" then
63
        term.setCursorPos(1,3)
64
        term.write("Please enter the admin password: ")
65
        local password = read("*")
66
        if adminPassword == password then
67
            table.remove(tbl,num)
68
            term.setCursorPos(1,5)
69-
            print("Patent deleted. A copy is stored on the working disk, and a read only copy is stored on the backup disk.")
69+
            print("Data deleted. A copy is stored on the working disk, and a read only copy is stored on the backup disk.")
70
        else
71
            term.setCursorPos(1,5)
72-
            print("PASSWORD INCORRECT, RETURNING TO VIEW ONLY.")
72+
            print("Password incorrect, returning to data view")
73
        end
74
    sleep(1)
75-
    numPats = #patTable
75+
    numData = #database
76-
    save(patTable,patentFile)
76+
    save(database,databaseFile)
77-
    patentWriting = false    
77+
    dataWriting = false    
78
    term.clear()
79
    end
80
end
81-
81+
 
82
local function handleKeys()
83
    while true do
84
        _,key = os.pullEvent("key")
85
        if key == keys.q then cpn = cpn - 1 term.clear() end
86
        if key == keys.e then cpn = cpn + 1 term.clear() end
87-
        if key == keys.p then writePatent() end
87+
        if key == keys.p then writeData() end
88-
        if key == keys.semiColon then deletePatent(patTable,cpn) end
88+
        if key == keys.semiColon then deleteData(database,cpn) end
89
    end
90
end
91-
91+
 
92
local function main()
93
    while true do
94-
        if patentWriting == false then
94+
        if not patentWriting then
95
            term.setCursorPos(1,1)
96
            term.clearLine()
97
            term.setTextColour(colours.white)
98-
            centerText(tostring(cpn) .. "/" .. tostring(numPats),1)
98+
            centerText(tostring(cpn) .. "/" .. tostring(numData),1)
99
            checkCurNumber()
100-
            if patTable[cpn] ~= nil then
100+
            if database[cpn] ~= nil then
101
                term.setTextColour(colours.red)
102-
                centerText("Owner: "..patTable[cpn]["owner"],2)
102+
                centerText("Owner: "..database[cpn]["owner"],2)
103
                term.setTextColour(colours.yellow)
104-
                centerText("Name: "..patTable[cpn]["name"],3)
104+
                centerText("Name: "..database[cpn]["name"],3)
105
                term.setTextColour(colours.white)
106
                term.setCursorPos(1,4)
107-
                print(patTable[cpn]["desc"])
107+
                print(database[cpn]["desc"])
108
            else
109
                term.clear()
110
            end
111
        end
112
        sleep(0.1)
113
    end
114
end
115
term.clear()
116-
parallel.waitForAny(handleKeys,main)
116+
parallel.waitForAny(handleKeys,main)