Skip to content

Commit

Permalink
Added data saving (but not loading)
Browse files Browse the repository at this point in the history
  • Loading branch information
Litarvan committed Dec 2, 2018
1 parent d3bf395 commit f019182
Show file tree
Hide file tree
Showing 8 changed files with 163 additions and 21 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
group 'fr.litarvan.sakado'
version '1.4.1-BETA'
version '1.5.0-BETA'

apply plugin: 'java'
apply plugin: 'application'
Expand Down
6 changes: 2 additions & 4 deletions src/main/java/fr/litarvan/sakado/server/SakadoServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,9 @@
import java.io.IOException;
import java.net.InetSocketAddress;

// TODO: Menu de la cantine + sauvegarde connexion

public class SakadoServer implements App
{
public static final String VERSION = "1.4.1-BETA";
public static final String VERSION = "1.5.0-BETA";

private static final Logger log = LogManager.getLogger("SakadoServer");

Expand Down Expand Up @@ -95,7 +93,7 @@ public void start()
configs.from("config/holidays.json").defaultIn(IOSource.at("holidays.default.json"));
configs.from("config/save.json").defaultIn(IOSource.at("save.default.json"));

//userManager.load();
userManager.load();

if (configs.at("proxy.enabled", boolean.class))
{
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/fr/litarvan/sakado/server/data/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,11 @@ public String getUsername()
return username;
}

public String getPassword()
{
return password;
}

public String getName()
{
return name;
Expand Down
10 changes: 3 additions & 7 deletions src/main/java/fr/litarvan/sakado/server/data/UserManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import fr.litarvan.commons.config.ConfigProvider;
import fr.litarvan.sakado.server.data.network.RequestException;
import fr.litarvan.sakado.server.data.saved.SavedEstablishment;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand Down Expand Up @@ -50,13 +51,8 @@ public UserManager()

public void load()
{
User[] saved = config.at("save.loggedUsers", User[].class);
if (saved == null)
{
saved = new User[0];
}

this.users = new ArrayList<>(Arrays.asList(saved));
SavedEstablishment[] establishments = config.at("save.establishments", SavedEstablishment[].class);
// TODO: Load every establishments and student class, refresh every user of it
}

public User login(String establishmentName, String username, String password, String deviceToken) throws IOException, RequestException
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package fr.litarvan.sakado.server.data.saved;

public class SavedEstablishment
{
private String name;
private SavedStudentClass[] studentClasses;

public SavedEstablishment(String name, SavedStudentClass[] studentClasses)
{
this.name = name;
this.studentClasses = studentClasses;
}

public String getName()
{
return name;
}

public SavedStudentClass[] getStudentClasses()
{
return studentClasses;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package fr.litarvan.sakado.server.data.saved;

import fr.litarvan.sakado.server.data.Reminder;

public class SavedStudentClass
{
private String name;
private String admin;
private SavedUser[] members;
private Reminder[] reminders;
private String[] longHomeworks;
private String[] representatives;

public SavedStudentClass(String name, String admin, SavedUser[] members, Reminder[] reminders, String[] longHomeworks, String[] representatives)
{
this.name = name;
this.admin = admin;
this.members = members;
this.reminders = reminders;
this.longHomeworks = longHomeworks;
this.representatives = representatives;
}

public String getName()
{
return name;
}

public String getAdmin()
{
return admin;
}

public SavedUser[] getMembers()
{
return members;
}

public Reminder[] getReminders()
{
return reminders;
}

public String[] getLongHomeworks()
{
return longHomeworks;
}

public String[] getRepresentatives()
{
return representatives;
}
}
44 changes: 44 additions & 0 deletions src/main/java/fr/litarvan/sakado/server/data/saved/SavedUser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package fr.litarvan.sakado.server.data.saved;

public class SavedUser
{
private String token;
private String establishment;
private String username;
private String password;
private long lastLogin;

public SavedUser(String token, String establishment, String username, String password, long lastLogin)
{
this.token = token;
this.establishment = establishment;
this.username = username;
this.password = password;
this.lastLogin = lastLogin;
}

public String getToken()
{
return token;
}

public String getEstablishment()
{
return establishment;
}

public String getUsername()
{
return username;
}

public String getPassword()
{
return password;
}

public long getLastLogin()
{
return lastLogin;
}
}
41 changes: 32 additions & 9 deletions src/main/java/fr/litarvan/sakado/server/refresh/SaveTask.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
package fr.litarvan.sakado.server.refresh;

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

import fr.litarvan.commons.config.Config;
import fr.litarvan.commons.config.ConfigProvider;
import fr.litarvan.sakado.server.data.Establishment;
import fr.litarvan.sakado.server.data.Reminder;
import fr.litarvan.sakado.server.data.SakadoData;
import fr.litarvan.sakado.server.data.saved.SavedEstablishment;
import fr.litarvan.sakado.server.data.saved.SavedStudentClass;
import fr.litarvan.sakado.server.data.saved.SavedUser;
import fr.litarvan.sakado.server.data.StudentClass;
import fr.litarvan.sakado.server.data.User;
import fr.litarvan.sakado.server.data.UserManager;
Expand All @@ -22,21 +29,37 @@ public void refresh(UserManager userManager)
{
Config config = this.config.get("save");

List<SavedEstablishment> savedEstablishments = new ArrayList<>();

for (Establishment establishment : data.getEstablishments())
{
for (StudentClass studentClass : establishment.getClasses())
{
config.set("classes." + studentClass.getId() + ".admin", studentClass.getAdmin());
config.set("classes." + studentClass.getId() + ".representatives", studentClass.getRepresentatives());
config.set("classes." + studentClass.getId() + ".reminders", studentClass.getReminders());
SavedStudentClass[] studentClasses = establishment.getClasses().stream().map(studentClass -> {
String[] members = studentClass.getMembers().toArray(new String[0]);
ArrayList<SavedUser> memberList = new ArrayList<>();

for (User user : studentClass.getLoggedUsers())
for (String member : members)
{
config.set("classes." + studentClass.getId() + ".users." + user.getUsername() + ".reminders", user.getReminders());
for (User user : userManager.getLoggedUsers())
{
if (user.getName().equals(member))
{
memberList.add(new SavedUser(user.getToken(), user.getEstablishment().getName(), user.getUsername(), user.getPassword(), user.getLastLogin()));
break;
}
}
}
}

return new SavedStudentClass(studentClass.getName(),
studentClass.getAdmin(),
memberList.toArray(new SavedUser[0]),
studentClass.getReminders().toArray(new Reminder[0]),
studentClass.getLongHomeworks().toArray(new String[0]),
studentClass.getRepresentatives().toArray(new String[0]));
}).toArray(SavedStudentClass[]::new);

savedEstablishments.add(new SavedEstablishment(establishment.getName(), studentClasses));
}

//config.set("loggedUsers", userManager.getLoggedUsers());
config.set("establishments", savedEstablishments.toArray(new SavedEstablishment[0]));
}
}

0 comments on commit f019182

Please sign in to comment.