Skip to content
This repository was archived by the owner on Jan 25, 2019. It is now read-only.

Commit ef456a9

Browse files
committed
Added more examples of classes
1 parent 8186986 commit ef456a9

File tree

7 files changed

+128
-5
lines changed

7 files changed

+128
-5
lines changed
File renamed without changes.

input_object.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
Model:Object
2+
3+
Object:lg
4+
lieblingsgrieche:Restaurant
5+
kategorie:Sterne 3
6+
name "Platon"
7+
8+
Object:maren
9+
maren:Gast
10+
status "König"
11+
geldbetrag:EUR 300
12+
13+
Object:klaudia
14+
klaudia:Gast
15+
status "König"
16+
geldbetrag:EUR 20
17+
hunger true
18+
19+
Object:k1
20+
:Kellner
21+
persAusweisNr 12345
22+
gehalt:EUR 1500
23+
24+
Link
25+
k1,lg
26+
+Arbeitnehmer,+Arbeitgeber
27+
28+
Link:bedient
29+
k1,maren
30+
31+
Link:bedient
32+
k1,klaudia
33+
34+
Link:besucht
35+
klaudia,lg
36+
37+
Link:besucht
38+
maren,lg
39+
40+
/Model

input_package.txt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
Model:Package
2+
3+
Package:main
4+
gui,drawer,generator,reader,parser
5+
6+
Package:gui
7+
8+
Package:drawer
9+
10+
Package:generator
11+
12+
Package:reader
13+
14+
Package:parser
15+
16+
Package:azul
17+
18+
Package:imageproc
19+
20+
Package:nom
21+
22+
Import
23+
gui,azul
24+
25+
Import
26+
drawer,imageproc
27+
28+
Import
29+
parser,nom
30+
31+
Access
32+
drawer,parser
33+
34+
/Model

input_use_case.txt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
Model:UseCase
2+
3+
System:Bank
4+
5+
Actor:customer
6+
Kunde
7+
8+
Actor:employee
9+
Bank Angestellter
10+
11+
UseCase:openAccount
12+
Konto eröffnen
13+
14+
UseCase:depositFunds
15+
Geld einzahlen
16+
17+
UseCase:calcBonus
18+
Bonus berechnen
19+
20+
Extend
21+
calcBonus,depositFunds
22+
Wenn Geld größer als 10.000€
23+
24+
Association
25+
customer,openAccount
26+
27+
Association
28+
customer,depositFunds
29+
30+
Association
31+
employee,openAccount
32+
33+
/Model

src/gui.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ struct AppData {
3636
impl Default for AppData {
3737
fn default() -> Self {
3838
Self {
39-
input_file_name: TextInputState::new("input.txt"),
39+
input_file_name: TextInputState::new("input_class.txt"),
4040
output_file_name: TextInputState::new("output.png"),
4141
input_model_structure: TextInputState::new("Model:Object
4242

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ private String description
9898
// "".to_string(),
9999
// "/Model".to_string()];
100100
// let current_working_directory = current_dir().ok().and_then(|p| Some(p.to_str().unwrap_or("/").to_string())).unwrap_or_default();;
101-
// let stringo = match reader::read_from_file(&*format!("{}/{}", current_working_directory, "input.txt")) {
101+
// let stringo = match reader::read_from_file(&*format!("{}/{}", current_working_directory, "input_class.txt")) {
102102
// Ok(val) => val,
103103
// Err(err) => return,
104104
// };
@@ -118,7 +118,7 @@ private String description
118118
// };
119119

120120
// So sollten Bilder eigentlich geladen werden:
121-
// let (input_filename, output_filename) = get_cli_args("input.txt", "output.png");
121+
// let (input_filename, output_filename) = get_cli_args("input_class.txt_class", "output.png");
122122
// let (classes, relations) = parser::init(&input_filename).unwrap();
123123
// let image_buf = generator::generate_pic(&classes, &relations);
124124
// image_buf.save(&Path::new(&output_filename)).unwrap();

src/parser.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -533,10 +533,26 @@ pub fn parse_model(lines: &[String]) -> Result<ModelContainer, ParseError> {
533533
ModelContainer {model_type: ModelType::ObjectModel, class_model: None, object_model: Some(object_model), package_model: None, use_case_model: None}
534534
},
535535
ModelType::PackageModel => {
536-
return Err(ParseError::InvalidModelError);
536+
let package_model = match pack_package_model(all_lines.as_bytes()){
537+
Ok(val) => val.1,
538+
Err(err) => {
539+
println!("Encountered error while parsing: {}", err);
540+
return Err(ParseError::ParseError);
541+
}
542+
};
543+
544+
ModelContainer {model_type: ModelType::ObjectModel, class_model: None, object_model: None, package_model: Some(package_model), use_case_model: None}
537545
},
538546
ModelType::UseCaseModel => {
539-
return Err(ParseError::InvalidModelError);
547+
let uc_model = match uc_use_case_model(all_lines.as_bytes()){
548+
Ok(val) => val.1,
549+
Err(err) => {
550+
println!("Encountered error while parsing: {}", err);
551+
return Err(ParseError::ParseError);
552+
}
553+
};
554+
555+
ModelContainer {model_type: ModelType::ObjectModel, class_model: None, object_model: None, package_model: None, use_case_model: Some(uc_model)}
540556
},
541557
ModelType::None => return Err(ParseError::InvalidModelError)
542558
};

0 commit comments

Comments
 (0)