1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
/*
* Copyright (C) 2013-2017 elementary Developers
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* used to access the Contracts File object and read its content
*/
public class Contractor.ContractFile : Object {
/**
* contract files filename extension
*/
private const string EXTENSION = ".contract";
/**
* the File object used to access its content
*/
private File file;
/**
* the constructor to create ContractFile object which contains the passed
* File object
*
* @param file the file to contain
*/
public ContractFile (File file) {
this.file = file;
}
/**
* get the contract ID from the filename, e.g. file-roller-compress
* (file-roller-compress.contract)
*
* @return the contracts ID, e.g. file-roller-compress
*/
public string get_id () {
return remove_extension (file.get_basename ());
}
/**
* loads and returns the internally stored files content
*
* @return the files content as string
*/
public string get_contents () throws Error {
uint8[] file_data;
if (file.load_contents (null, out file_data, null)) {
return (string) file_data;
}
return "";
}
/**
* checks if the filename extension is '.contract'
*
* @param filename the full filename incl. the filename extension
*
* @return true if the filename extension is '.contract'; false otherwise
*/
public static bool is_valid_filename (string filename) {
return filename[- EXTENSION.length : filename.length] == EXTENSION;
}
/**
* removes the filename extension and returns the result
*
* @param file_name the filename incl. the filename extesnion
*
* @return the filename without the filename extension
*/
private static string remove_extension (string file_name) {
return file_name[0 : - EXTENSION.length];
}
}
|