Index: sources/app/src/main/java/parkup/entities/Administrator.java
===================================================================
--- sources/app/src/main/java/parkup/entities/Administrator.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/entities/Administrator.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
@@ -0,0 +1,165 @@
+package parkup.entities;
+
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import javax.persistence.*;
+import java.util.Collection;
+import java.util.Collections;
+
+@Entity
+@Table(name = "administrator")
+public class Administrator implements UserDetails {
+    @Id
+    @SequenceGenerator(
+            name="administrator_sequence_generator",
+            sequenceName = "administrator_sequence",
+            allocationSize = 1,
+            initialValue = 100
+    )
+    @GeneratedValue(    //za postgres treba sequence da se namesti i ime na generator mi ga davamo kako od gore sto e
+            strategy = GenerationType.SEQUENCE,
+            generator = "administrator_sequence_generator"
+    )
+    @Column(name = "administratorId")
+    private int administratorId;
+
+    @Column(name = "firstName")
+    private String firstName;
+
+    @Column(name = "lastName")
+    private String lastName;
+
+    @Column(name = "email")
+    private String email;
+
+    @Column(name = "password")
+    private String password;
+
+    @Column(name = "mobile")
+    private String mobile;
+
+    @Column(name = "role")
+    private String role;
+
+    private boolean locked;
+
+    private boolean enabled;
+
+    public Administrator(){
+        this.role = "ROLE_ADMINISTRATOR";
+    }
+
+    public Administrator(int administratorId, String firstName, String lastName, String email, String password, String mobile) {
+        this.administratorId = administratorId;
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.email = email;
+        this.password = password;
+        this.mobile = mobile;
+        this.role = "ROLE_ADMINISTRATOR";
+    }
+
+    public Administrator(String firstName, String lastName, String email, String password, String mobile) {
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.email = email;
+        this.password = password;
+        this.mobile = mobile;
+        this.role = "ROLE_ADMINISTRATOR";
+    }
+
+    public Administrator(String firstName, String lastName, String email, String password) {
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.email = email;
+        this.password = password;
+        this.mobile = mobile;
+        this.role = "ROLE_ADMINISTRATOR";
+    }
+
+    public int getAdministratorId() {
+        return administratorId;
+    }
+
+    public void setAdministratorId(int administratorId) {
+        this.administratorId = administratorId;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getRole() {return role;}
+
+    public void setRole(String role) {this.role = role;}
+
+    @Override
+    public Collection<? extends GrantedAuthority> getAuthorities() {
+        SimpleGrantedAuthority authority = new SimpleGrantedAuthority(role);
+        return Collections.singleton(authority);
+    }
+
+    @Override
+    public String getPassword() {
+        return password;
+    }
+
+    @Override
+    public String getUsername() {
+        return email;
+    }
+
+    @Override
+    public boolean isAccountNonExpired() {
+        return true;
+    }
+
+    @Override
+    public boolean isAccountNonLocked() {
+        return !locked;
+    }
+
+    @Override
+    public boolean isCredentialsNonExpired() {
+        return true;
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return enabled;
+    }
+}
Index: sources/app/src/main/java/parkup/entities/Guest.java
===================================================================
--- sources/app/src/main/java/parkup/entities/Guest.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/entities/Guest.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
@@ -0,0 +1,81 @@
+package parkup.entities;
+
+import javax.persistence.*;
+
+import parkup.data.Tablicka;
+
+@Entity
+@Table(name = "guest")
+public class Guest {
+    @Id
+    @SequenceGenerator(
+            name="guest_sequence_generator",
+            sequenceName = "guest_sequence",
+            allocationSize = 1,
+            initialValue = 400
+    )
+    @GeneratedValue(    //za postgres treba sequence da se namesti i ime na generator mi ga davamo kako od gore sto e
+            strategy = GenerationType.SEQUENCE,
+            generator = "guest_sequence_generator"
+    )
+    @Column(name = "guestId")
+    private int guestId;
+
+    //dali ova treba vaka?
+    @OneToOne
+    @JoinColumn(name = "tablickaId", nullable = false)
+    private Tablicka tablicka;
+
+    @Column(name = "email")
+    private String email;
+
+    @Column(name = "mobile")
+    private String mobile;
+
+    public Guest() {}
+
+    public Guest(int guestId, Tablicka tablicka, String email, String mobile) {
+        this.guestId = guestId;
+        this.tablicka = tablicka;
+        this.email = email;
+        this.mobile = mobile;
+    }
+
+    public Guest(Tablicka tablicka, String email, String mobile) {
+        this.tablicka = tablicka;
+        this.email = email;
+        this.mobile = mobile;
+    }
+
+    public int getGuestId() {
+        return guestId;
+    }
+
+    public void setGuestId(int guestId) {
+        this.guestId = guestId;
+    }
+
+    public Tablicka getTablicka() {
+        return tablicka;
+    }
+
+    public void setTablicka(Tablicka tablicka) {
+        this.tablicka = tablicka;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+}
Index: sources/app/src/main/java/parkup/entities/ParkingSession.java
===================================================================
--- sources/app/src/main/java/parkup/entities/ParkingSession.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/entities/ParkingSession.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
@@ -0,0 +1,64 @@
+package parkup.entities;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "parking_session")
+public class ParkingSession {
+    @Id
+    @Column(name = "parking_session_id")
+    @SequenceGenerator(
+            name="parking_session_generator",
+            sequenceName = "parking_session_sequence",
+            allocationSize = 1,
+            initialValue = 700
+    )
+    @GeneratedValue(    //za postgres treba sequence da se namesti i ime na generator mi ga davamo kako od gore sto e
+            strategy = GenerationType.SEQUENCE,
+            generator = "parking_session_sequence_generator"
+    )
+    private int pssId;
+
+    @Column(name = "time_start")
+    private String timeStart;
+
+    @Column(name = "time_end")
+    private String timeEnd;
+
+    public ParkingSession() {}
+
+    public ParkingSession(int pssId, String timeStart, String timeEnd) {
+        this.pssId = pssId;
+        this.timeStart = timeStart;
+        this.timeEnd = timeEnd;
+    }
+
+    public ParkingSession(String timeStart, String timeEnd) {
+        this.timeStart = timeStart;
+        this.timeEnd = timeEnd;
+    }
+
+    public int getPssId() {
+        return this.pssId;
+    }
+
+    public void setPssId(int pssId) {
+        this.pssId = pssId;
+    }
+
+    public String getTimeStart() {
+        return this.timeStart;
+    }
+
+    public void setTimeStart(String timeStart) {
+        this.timeStart = timeStart;
+    }
+
+    public String getTimeEnd() {
+        return this.timeEnd;
+    }
+
+    public void setTimeEnd(String timeEnd) {
+        this.timeEnd = timeEnd;
+    }
+}
Index: sources/app/src/main/java/parkup/entities/ParkingSpace.java
===================================================================
--- sources/app/src/main/java/parkup/entities/ParkingSpace.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/entities/ParkingSpace.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
@@ -0,0 +1,78 @@
+package parkup.entities;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "parking_space")
+public class ParkingSpace {
+    @Id
+    @Column(name = "parking_space_id")
+    @SequenceGenerator(
+            name="parking_space_generator",
+            sequenceName = "parking_space_sequence",
+            allocationSize = 1,
+            initialValue = 600
+    )
+    @GeneratedValue(    //za postgres treba sequence da se namesti i ime na generator mi ga davamo kako od gore sto e
+            strategy = GenerationType.SEQUENCE,
+            generator = "parking_space_sequence_generator"
+    )
+    private int psId;
+
+    @Column(name = "psName")
+    private String psName;
+
+    @Column(name = "isTaken")
+    private boolean isTaken;
+
+    @Column(name = "isHandicaped")
+    private boolean isHandicaped;
+
+    public ParkingSpace() {}
+
+    public ParkingSpace(int psId, String psName, boolean isTaken, boolean isHandicaped) {
+        this.psId = psId;
+        this.psName = psName;
+        this.isTaken = isTaken;
+        this.isHandicaped = isHandicaped;
+    }
+
+    public ParkingSpace(String psName, boolean isTaken, boolean isHandicaped) {
+        this.psName = psName;
+        this.isTaken = isTaken;
+        this.isHandicaped = isHandicaped;
+    }
+
+    public int getPsId() {
+        return this.psId;
+    }
+
+    public void setPsId(int psId) {
+        this.psId = psId;
+    }
+
+    public String getPsName() {
+        return this.psName;
+    }
+
+    public void setPsName(String psName) {
+        this.psName = psName;
+    }
+
+    public boolean isTaken() {
+        return this.isTaken;
+    }
+
+    public void setTaken(boolean isTaken) {
+        this.isTaken = isTaken;
+    }
+
+    public boolean isHandicaped() {
+        return this.isHandicaped;
+    }
+
+    public void setHandicaped(boolean isHandicaped) {
+        this.isHandicaped = isHandicaped;
+    }
+}
+
Index: sources/app/src/main/java/parkup/entities/ParkingZone.java
===================================================================
--- sources/app/src/main/java/parkup/entities/ParkingZone.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/entities/ParkingZone.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
@@ -0,0 +1,127 @@
+package parkup.entities;
+
+import javax.persistence.*;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+@Table(name = "parking_zone")
+public class ParkingZone {
+    @Id
+    @SequenceGenerator(
+            name="parking_zone_generator",
+            sequenceName = "parking_zone_sequence",
+            allocationSize = 1,
+            initialValue = 500
+    )
+    @GeneratedValue(    //za postgres treba sequence da se namesti i ime na generator mi ga davamo kako od gore sto e
+            strategy = GenerationType.SEQUENCE,
+            generator = "parking_zone_sequence_generator"
+    )
+    @Column(name = "parking_zone_id")
+    private int pzId;
+
+    @Column(name = "pz_name")
+    private String pzName;
+
+    @Column(name = "price")
+    private int price;
+
+    @Column(name = "capacity")
+    private int capacity;
+
+    @Column(name = "work_hours")
+    private String workHours;
+
+    @Column(name = "location")
+    private String location;
+
+    @Column(name = "zafateniMesta")
+    private int zafateniMesta;
+
+    @OneToMany(cascade = {CascadeType.ALL})
+    @JoinColumn(name = "parkingSpaces", nullable = false)
+    private List<ParkingSpace> parkingSpaces;
+
+    public ParkingZone() {
+        this.zafateniMesta = 0;
+        this.parkingSpaces = new ArrayList<ParkingSpace>();
+    }
+
+    public ParkingZone(int pzId, String pzName, int price, int capacity, String workHours, String location, List<ParkingSpace> parkingSpaces) {
+        this.pzId = pzId;
+        this.pzName = pzName;
+        this.price = price;
+        this.capacity = capacity;
+        this.workHours = workHours;
+        this.location = location;
+        this.zafateniMesta = 0;
+        this.parkingSpaces = parkingSpaces;
+    }
+
+    public ParkingZone(String pzName, int price, int capacity, String workHours, String location, List<ParkingSpace> parkingSpaces) {
+        this.pzName = pzName;
+        this.price = price;
+        this.capacity = capacity;
+        this.workHours = workHours;
+        this.location = location;
+        this.zafateniMesta = 0;
+        this.parkingSpaces = parkingSpaces;
+    }
+
+    public int getId() {
+        return this.pzId;
+    }
+
+    public void setId(int pzId) {
+        this.pzId = pzId;
+    }
+
+    public String getPzName() {
+        return this.pzName;
+    }
+
+    public void setPzName(String pzName) {
+        this.pzName = pzName;
+    }
+
+    public int getPrice() {
+        return this.price;
+    }
+
+    public void setPrice(int price) {
+        this.price = price;
+    }
+
+    public int getCapacity() {
+        return this.capacity;
+    }
+
+    public void setCapacity(int capacity) {
+        this.capacity = capacity;
+    }
+
+    public String getWorkHours() {
+        return this.workHours;
+    }
+
+    public void setWorkHours(String workHours) {
+        this.workHours = workHours;
+    }
+
+    public String getLocation() {
+        return this.location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public int getZafateniMesta() {return zafateniMesta;}
+
+    public void setZafateniMesta(int zafateniMesta) {this.zafateniMesta = zafateniMesta;}
+
+    public List<ParkingSpace> getParkingSpaces() {return parkingSpaces;}
+
+    public void setParkingSpaces(List<ParkingSpace> parkingSpaces) {this.parkingSpaces = parkingSpaces;}
+}
Index: sources/app/src/main/java/parkup/entities/RegistriranParkirac.java
===================================================================
--- sources/app/src/main/java/parkup/entities/RegistriranParkirac.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/entities/RegistriranParkirac.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
@@ -0,0 +1,135 @@
+package parkup.entities;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.*;
+
+import parkup.data.Tablicka;
+
+@Entity
+@Table(name = "registriranParkirac")
+public class RegistriranParkirac {
+    @Id
+    @SequenceGenerator(
+            name="registriranParkirac_sequence_generator",
+            sequenceName = "registriranParkirac_sequence",
+            allocationSize = 1,
+            initialValue = 300
+    )
+    @GeneratedValue(    //za postgres treba sequence da se namesti i ime na generator mi ga davamo kako od gore sto e
+            strategy = GenerationType.SEQUENCE,
+            generator = "registriranParkirac_sequence_generator"
+    )
+    @Column(name = "regParkId")
+    private int regParkId;
+
+    @Column(name = "name")
+    private String name;
+
+    @Column(name = "surname")
+    private String surname;
+
+    @Column(name = "password")
+    private String password;
+
+    @OneToMany
+    @Column(name = "regTablicki")
+    private List<Tablicka> regTablicki;
+
+    @Column(name = "email")
+    private String email;
+
+    @Column(name = "mobile")
+    private String mobile;
+
+    @Column(name = "role")
+    private String role;
+
+    public RegistriranParkirac() {
+
+        this.regTablicki = new ArrayList<Tablicka>();
+        this.role = "ROLE_REGISTIRAN_PARKIRAC";
+    }
+
+    public RegistriranParkirac(int regParkId, String name, String surname, String password, List<Tablicka> regTablicki, String email, String mobile) {
+        this.regParkId = regParkId;
+        this.name = name;
+        this.surname = surname;
+        this.password = password;
+        this.regTablicki = regTablicki;
+        this.email = email;
+        this.mobile = mobile;
+        this.role = "ROLE_REGISTIRAN_PARKIRAC";
+    }
+
+    public RegistriranParkirac(String name, String surname, String password, List<Tablicka> regTablicki, String email, String mobile) {
+        this.name = name;
+        this.surname = surname;
+        this.password = password;
+        this.regTablicki = regTablicki;
+        this.email = email;
+        this.mobile = mobile;
+        this.role = "ROLE_REGISTIRAN_PARKIRAC";
+    }
+
+    public int getRegParkId() {
+        return regParkId;
+    }
+
+    public void setRegParkId(int regParkId) {
+        this.regParkId = regParkId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSurname() {
+        return surname;
+    }
+
+    public void setSurname(String surname) {
+        this.surname = surname;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public List<Tablicka> getRegTablicki() {
+        return regTablicki;
+    }
+
+    public void setRegTablicki(List<Tablicka> regTablicki) {
+        this.regTablicki = regTablicki;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getRole() {return role;}
+
+    public void setRole(String role) {this.role = role;}
+}
+
Index: sources/app/src/main/java/parkup/entities/Vraboten.java
===================================================================
--- sources/app/src/main/java/parkup/entities/Vraboten.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/entities/Vraboten.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
@@ -0,0 +1,149 @@
+package parkup.entities;
+
+import parkup.data.Tablicka;
+
+import javax.persistence.*;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+@Table(name = "vraboten")
+public class Vraboten {
+    @Id
+    @SequenceGenerator(
+            name="vraboten_sequence_generator",
+            sequenceName = "vraboten_sequence",
+            allocationSize = 1,
+            initialValue = 200
+    )
+    @GeneratedValue(    //za postgres treba sequence da se namesti i ime na generator mi ga davamo kako od gore sto e
+            strategy = GenerationType.SEQUENCE,
+            generator = "vraboten_sequence_generator"
+    )
+    @Column(name = "vrabotenId")
+    private int vrabotenId;
+
+    @Column(name = "firstName")
+    private String firstName;
+
+    @Column(name = "lastName")
+    private String lastName;
+
+    @Column(name = "email")
+    private String email;
+
+    @Column(name = "password")
+    private String password;
+
+    @Column(name = "mobile")
+    private String mobile;
+
+    @Column(name = "role")
+    private String role;
+
+    @ManyToMany(cascade = {CascadeType.ALL})
+    @JoinColumn(name = "zona", nullable = false)
+    private List<ParkingZone> parkingZones;
+
+    @Column(name = "status")
+    private String status;
+
+    @Column(name = "account")
+    private boolean account;
+
+    public Vraboten() {
+        this.role = "ROLE_VRABOTEN";
+        this.parkingZones = new ArrayList<ParkingZone>();
+        this.account = true;
+        this.status = "neRaboti";
+    }
+
+    public Vraboten(int vrabotenId, String firstName, String lastName, String email, String password, String mobile, List<ParkingZone> parkingZones) {
+        this.vrabotenId = vrabotenId;
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.email = email;
+        this.password = password;
+        this.mobile = mobile;
+        this.parkingZones = parkingZones;
+        this.role = "ROLE_VRABOTEN";
+        this.account = true;
+        this.status = "neRaboti";
+    }
+
+    public Vraboten(String firstName, String lastName, String email, String password, String mobile, List<ParkingZone> parkingZones) {
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.email = email;
+        this.password = password;
+        this.mobile = mobile;
+        this.parkingZones = parkingZones;
+        this.role = "ROLE_VRABOTEN";
+        this.account = true;
+        this.status = "neRaboti";
+    }
+
+    public int getVrabotenId() {
+        return vrabotenId;
+    }
+
+    public void setVrabotenId(int vrabotenId) {
+        this.vrabotenId = vrabotenId;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getRole() {return role;}
+
+    public void setRole(String role) {this.role = role;}
+
+    public List<ParkingZone> getParkingZones() {return parkingZones;}
+
+    public void setParkingZones(List<ParkingZone> parkingZones) {this.parkingZones = parkingZones;}
+
+    public String getStatus() {return status;}
+
+    public void setStatus(String status) {this.status = status;}
+
+    public boolean isAccount() {return account;}
+
+    public void setAccount(boolean account) {this.account = account;}
+}
