Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,14 @@
- [x] Kompozycja


_w każdym przypadku: liczności 1-* lub *-* oraz automatyczne tworzenie poł. zwrotnego_
_w każdym przypadku: liczności 1-* lub *-* oraz automatyczne tworzenie poł. zwrotnego_


## MP4
- [x] Atrybutu
- [x] Unique
- [x] Subset
- [x] Ordered
- [x] Bag
- [x] Xor
- [x] Ograniczenie Własne
88 changes: 88 additions & 0 deletions src/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
import java.util.ArrayList;
import java.util.List;

import taxOffice.Author;
import taxOffice.Director;
import taxOffice.Document;
import taxOffice.TaxOffice;

public class App {
final static String fileName = "data/data.kfc";

Expand Down Expand Up @@ -83,5 +88,88 @@ public static void main(String[] args) {

System.out.println("Parts: " + tools[0].getParts().toString());

// -----------------------MP4-----------------------

// atrybut
TaxOffice taxOffice;
try {
taxOffice = new TaxOffice("kajki 3");
taxOffice.setNumber(5);
System.out.println(taxOffice.getNumber());
taxOffice.setNumber(-2);
} catch (Exception exc) {
System.out.println(exc);
}

// Unique
try {
TaxOffice to = new TaxOffice("ladna 2");
TaxOffice ti = new TaxOffice("kajki 3");
} catch (Exception exc) {
System.out.println(exc);
}

// Subset
try {
TaxOffice to = new TaxOffice("jp2 2");
Director director1 = new Director();
Director director2 = new Director();
to.addDirector(director1);
to.addDirector(director2);
to.chooseMainDirector(director2);
System.out.println(to.getMainDirector());
to.chooseMainDirector(new Director());
} catch (Exception exc) {
exc.printStackTrace();
}

// Ordered
Document d = new Document();
Document o = new Document();
Document c = new Document();
Document u = new Document();
Document m = new Document();
Document e = new Document();
Document n = new Document();
Document t = new Document();
Document.showAllDocuments();

// Bag
Author[] authors1 = { new Author(0) };
Author[] authors2 = { new Author(0), new Author(1) };
Author[] authors3 = { new Author(0), new Author(1), new Author(2) };

Document doc = new Document(authors1, "zlksmfspdokf");
Document ume = new Document(authors2, "xdfdvcbcvb");
Document nt = new Document(authors3, "qwewqrertrtt7ui");

System.out.println(doc.showRelation());
System.out.println(ume.showRelation());
System.out.println(nt.showRelation());

// Xor
try {
Director di = new Director();
TaxOffice tx = new TaxOffice("k puchatka 3");
authors1[0].setDirector(di);
authors2[1].setTaxoffice(tx);
authors1[0].setTaxoffice(tx);
} catch (Exception exc) {
exc.printStackTrace();
}

// Ograniczenie Własne
Document cument = new Document();
System.out.println(cument.getNumberOfCopies());
cument.makeCopy();
System.out.println(cument.getNumberOfCopies());
cument.destoyCopy();
System.out.println(cument.getNumberOfCopies());
cument.destoyCopy();
System.out.println(cument.getNumberOfCopies());
cument.destoyCopy();
System.out.println(cument.getNumberOfCopies());
cument.makeCopy();
System.out.println(cument.getNumberOfCopies());
}
}
37 changes: 37 additions & 0 deletions src/taxOffice/Author.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package taxOffice;

import java.util.ArrayList;
import java.util.List;

public class Author {
private List<DocumentAuthor> documents;
private int id;
private TaxOffice taxoffice;
private Director director;

public Author(int id) {
this.id = id;
}

public void setTaxoffice(TaxOffice taxoffice) throws Exception {
if (this.director == null)
this.taxoffice = taxoffice;
else
throw new Exception("Coannot be in relation with director and tax office");
}

public void setDirector(Director director) throws Exception {
if (this.taxoffice == null)
this.director = director;
else
throw new Exception("Coannot be in relation with director and tax office");

}

public void setDocuments(DocumentAuthor... documentauthor) {
this.documents = new ArrayList<>();
for (DocumentAuthor da : documentauthor) {
this.documents.add(da);
}
}
}
10 changes: 10 additions & 0 deletions src/taxOffice/Director.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package taxOffice;

public class Director {
private TaxOffice taxOffice;
private Author author;

public void setTaxOffice(TaxOffice taxOffice) {
this.taxOffice = taxOffice;
}
}
58 changes: 58 additions & 0 deletions src/taxOffice/Document.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package taxOffice;

import java.util.ArrayList;
import java.util.List;

public class Document {
private static List<Document> documents = new ArrayList<>();
private List<DocumentAuthor> authors;
private int numberOfCopies;

public Document() {
this.numberOfCopies = 1;
documents.add(this);
}

public int getNumberOfCopies() {
return numberOfCopies;
}

public Document(Author[] authors, String edition) {
this.numberOfCopies = 1;
documents.add(this);
setAuthors(authors, edition);
}

public void makeCopy(){
if (this.numberOfCopies > 0)
this.numberOfCopies++;
}

public void destoyCopy(){
if (this.numberOfCopies >= 1)
this.numberOfCopies--;
}

private void setAuthors(Author[] authors, String edition) {
this.authors = new ArrayList<>();
for (Author author : authors) {
DocumentAuthor da = new DocumentAuthor(edition);
da.setDocument(this);
da.setAuthor(author);
this.authors.add(da);
}
}

public String showRelation() {
String resoult = "";
for (DocumentAuthor da : authors) {
resoult += da.toString() + " || ";
}
return resoult;
}

public static void showAllDocuments() {
for (Document d : documents)
System.out.println(d);
}
}
20 changes: 20 additions & 0 deletions src/taxOffice/DocumentAuthor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package taxOffice;

public class DocumentAuthor {
private Author author;
private Document document;
private String edition;

public DocumentAuthor(String edition) {
this.edition = edition;
}

public void setAuthor(Author author) {
this.author = author;
this.author.setDocuments(this);
}

public void setDocument(Document document) {
this.document = document;
}
}
63 changes: 63 additions & 0 deletions src/taxOffice/TaxOffice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package taxOffice;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class TaxOffice {
private String address;
private int number;
private List<Director> directors;
private Director mainDirector;
private List<Author> authors;
public static Set<String> addresses = new HashSet<>();

public TaxOffice(String addres) throws Exception {
this.directors = new ArrayList<>();
this.authors = new ArrayList<>();
setAddress(addres);
}

public String getAddress() {
return this.address;
}

public int getNumber() {
return this.number;
}

private void setAddress(String address) throws Exception {
if (!addresses.contains(address)) {
addresses.add(address);
this.address = address;
} else
throw new Exception("Ther's already TaxOffice with this address");
}

public void setNumber(int number) throws Exception {
if (number > 0)
this.number = number;
else
throw new Exception("Number of a TaxOffice must be positive");
}

public void addDirector(Director director){
if (directors == null){
this.directors = new ArrayList<>();
}
this.directors.add(director);
director.setTaxOffice(this);
}

public void chooseMainDirector(Director director) throws Exception {
if (this.directors.contains(director))
this.mainDirector = director;
else
throw new Exception("This Director is not a part of this TaxOffice");
}

public Director getMainDirector() {
return mainDirector;
}
}