diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..411fffd --- /dev/null +++ b/build.gradle @@ -0,0 +1,43 @@ +plugins { + id 'eclipse' + id 'java-library' +} + +repositories { + mavenCentral() + maven { + name 'm2-dv8tion' + url 'https://m2.dv8tion.net/releases' + } +} + +dependencies { + testImplementation 'junit:junit:4.13.2' + + testImplementation 'net.dv8tion:JDA:4.4.0_352' + + implementation 'org.jopendocument:jOpenDocument:1.3' + + implementation('xerces:xercesImpl') { + version { + strictly '2.12.2' + } + } + + testRuntimeOnly "org.slf4j:slf4j-nop:1.7.36" +} + +compileJava.options.encoding = "UTF-8" +compileTestJava.options.encoding = "UTF-8" + + +eclipse.classpath.file { + whenMerged { + entries.findAll { isModule(it) }.each { it.entryAttributes['module'] = 'true' } + } +} + +boolean isModule(entry) { + // filter java 9 modules + entry.kind == 'lib' // Only libraries can be modules +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..6948406 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'BernardPermissions' diff --git a/src/com/bernard/permissions/tableured/FileManager.java b/src/com/bernard/permissions/tableured/FileManager.java deleted file mode 100644 index 0e38021..0000000 --- a/src/com/bernard/permissions/tableured/FileManager.java +++ /dev/null @@ -1,370 +0,0 @@ -package com.bernard.permissions.tableured; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import com.bernard.permissions.StringPermission; -import com.bernard.permissions.tableured.TPermissionContext.Inheritance; -import com.bernard.permissions.tableured.TPermissionContext.InheritancePolicy; -import com.bernard.permissions.tableured.TPermissionContext.Val; -import com.sun.star.beans.PropertyValue; -import com.sun.star.beans.XPropertySet; -import com.sun.star.comp.helper.Bootstrap; -import com.sun.star.comp.helper.BootstrapException; -import com.sun.star.frame.XComponentLoader; -import com.sun.star.frame.XStorable; -import com.sun.star.lang.XMultiComponentFactory; -import com.sun.star.sheet.XConditionalFormat; -import com.sun.star.sheet.XConditionalFormats; -import com.sun.star.sheet.XSheetCellRange; -import com.sun.star.sheet.XSheetCellRangeContainer; -import com.sun.star.sheet.XSheetCellRanges; -import com.sun.star.sheet.XSpreadsheet; -import com.sun.star.sheet.XSpreadsheetDocument; -import com.sun.star.sheet.XSpreadsheets; -import com.sun.star.table.CellRangeAddress; -import com.sun.star.table.XCell; -import com.sun.star.table.XCellRange; -import com.sun.star.table.XColumnRowRange; -import com.sun.star.uno.Exception; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.util.XCloseable; -import com.sun.star.util.XMergeable; - -public class FileManager { - - private static XComponentContext xcc_noaccess; - - public static final int MAX_ROW = 3141; - public static final int MAX_COL = 3141; - - public static XComponentContext xcc() { - if (xcc_noaccess == null) { - try { - xcc_noaccess = Bootstrap.bootstrap(); - System.out.println("Connected to a running office ..."); - } catch (BootstrapException e) { - System.err.println("Couldn't connect to office, you won't be able to use "); - } - } - return xcc_noaccess; - } - - //TODO: remove «throws Exception» for more precise exceptions - - public static final TPermissionContext readFromFile(File f) throws Exception { - - XComponentContext xcc = xcc(); - XMultiComponentFactory xmcf; - XSpreadsheetDocument xsd; - - xmcf = xcc.getServiceManager(); - Object object = xmcf.createInstanceWithContext("com.sun.star.frame.Desktop", xcc); - XComponentLoader xComponentLoader = qi(XComponentLoader.class,object); - PropertyValue[] docLoadProperties = { new PropertyValue() }; - docLoadProperties[0].Name = "Hidden"; - docLoadProperties[0].Value = true; - xsd = qi(XSpreadsheetDocument.class, - xComponentLoader.loadComponentFromURL("file://"+f.getAbsolutePath(), "_blank", 0, docLoadProperties)); - - // Variables de sortie: - Set defaultGiven = new HashSet<>(); - Map> specs = new HashMap<>(); - Map> inheritance = new HashMap<>(); - - - String[] sheetNames = xsd.getSheets().getElementNames(); - for (int s = 0; s < sheetNames.length; s++) { - String sheetName = sheetNames[s]; - XSpreadsheet sheet = qi(XSpreadsheet.class,xsd.getSheets().getByName(sheetName)); - - // Si c'est des permissions - if(sheetName.startsWith("Permission")) { - - // Parsing users/groups names - int defaultColIndex; - List holders = new ArrayList<>(); - // PermName,…,…,…,Default - for(defaultColIndex = 1;!sheet.getCellByPosition(defaultColIndex+1, 0).getFormula().equals("#~END~#") && defaultColIndex thisSpec = new HashMap<>(); - - - - for(int hi=0;hi inhz = null; - - for(int col = 1;!sheet.getCellByPosition(col, 0).getFormula().equals("#~END~#") && col <= MAX_COL;col++) { - String rule = sheet.getCellByPosition(col, i).getFormula(); - if(!rule.isBlank()) { - InheritancePolicy ipol = InheritancePolicy.fromChar(rule.charAt(0)); - String motherHolderName = (ipol==InheritancePolicy.ALL)?rule:rule.substring(1); - - if(inhz==null) - inhz = new ArrayList<>(); - inhz.add(new Inheritance(motherHolderName, ipol)); - } - } - if(inhz!=null) - inheritance.put(holder, inhz); - - - } - - - } - } - - System.out.println(defaultGiven); - System.out.println(specs); - System.out.println(inheritance); - - TPermissionContext tpc = new TPermissionContext(defaultGiven, specs, inheritance); - if(tpc.anyCycle()) - throw new IllegalArgumentException("Cycle detected !"); - - return tpc; - } - - public static final void writeToFile(File f,TPermissionContext tpc) throws Exception { - - XComponentContext xcc = xcc(); - XMultiComponentFactory xmcf; - XSpreadsheetDocument xsd; - - xmcf = xcc.getServiceManager(); - - xmcf = xcc.getServiceManager(); - Object object = xmcf.createInstanceWithContext("com.sun.star.frame.Desktop", xcc); - XComponentLoader xcl = qi(XComponentLoader.class,object); - - PropertyValue[] docLoadProperties = { new PropertyValue() }; - docLoadProperties[0].Name = "Hidden"; - docLoadProperties[0].Value = true; - String baseFile = new File("stringPermissionBase.ods").getAbsolutePath(); - - xsd = UnoRuntime.queryInterface( - XSpreadsheetDocument.class, xcl.loadComponentFromURL("file://"+baseFile, "_blank", 0, docLoadProperties )); - - XSpreadsheets sheets = xsd.getSheets(); - - - XSpreadsheet permissionsS = qi(XSpreadsheet.class,sheets.getByName("Permissions")); - XSpreadsheet permissionsCompleteS = qi(XSpreadsheet.class,sheets.getByName("Permissions-complete")); - XSpreadsheet holdersS = qi(XSpreadsheet.class,sheets.getByName("Holders")); - - - - - // ----- Permissions sheet ----- - - writePermissionsSheetOutline(tpc, permissionsS,false); - - - - - //TODO: Ajouter le support pour les holders qui commencent par un + ou un - (avec ++=+, +++=++, ...) - //TODO: Faire un tri qui «garde la structure du graphe d'héritage» - - // ----- Heritance sheet ----- - List enfants = tpc.inheritance.keySet().stream().sorted().collect(Collectors.toList()); - - holdersS.getCellByPosition(0, 0).setFormula("Holder");; - holdersS.getCellByPosition(1, 0).setFormula("Héritages");; - System.out.println(tpc.inheritance); - int maxCol = 0; - for(int i=0;i parents = tpc.inheritance.get(enfants.get(i)); - for (int j = 0; j < parents.size(); j++) { - String toWrite = parents.get(j).policy.toChar()+parents.get(j).holder; - holdersS.getCellByPosition(j+1, i+1).setFormula(toWrite); - } - maxCol = Math.max(maxCol, parents.size()); - } - - // Adding the style on the heritance core. - XSheetCellRange xscr = qi(XSheetCellRange.class,holdersS.getCellRangeByPosition(1,0,maxCol,0)); - System.out.println(xscr); - qi(XMergeable.class,xscr).merge(true); - for(int i=0;i permissions = Stream.concat( - tpc.specs.keySet().stream(), - tpc.defaultGiven.stream() - ).distinct().sorted().collect(Collectors.toList()); - List permSpecHolders = Stream.concat(tpc.inheritance.keySet().stream(),tpc.specs.values().stream().flatMap(m -> m.keySet().stream())).distinct().sorted().collect(Collectors.toList()); - //TODO: Find a way to distinct and sorted at the same time - for (int i = 0; i < permissions.size(); i++) { - XCell cell = permissionsS.getCellByPosition(0,i+1); - cell.setFormula(permissions.get(i).toString()); - qi(XPropertySet.class, cell).setPropertyValue("CellStyle", (i%2==0)?"SpecPermissionEven":"SpecPermissionOdd"); - } - for (int j = 0; j < permSpecHolders.size(); j++) { - XCell cell = permissionsS.getCellByPosition(j+1,0); - cell.setFormula(permSpecHolders.get(j)); - qi(XPropertySet.class, cell).setPropertyValue("CellStyle", (j%2==0)?"SpecHolderEven":"SpecHolderOdd"); - } - - int defaultHolderCol = permSpecHolders.size()+1; - XCell celld = permissionsS.getCellByPosition(defaultHolderCol,0); - celld.setFormula("#~DEFAULT~#"); - qi(XPropertySet.class, celld).setPropertyValue("CellStyle", "SpecHolderDefault"); - - for(Entry> etry : tpc.specs.entrySet()) { - int permIndex = Collections.binarySearch(permissions, etry.getKey()); - for(Entry ett : etry.getValue().entrySet()) { - int hldrIndex = Collections.binarySearch(permSpecHolders, ett.getKey()); - if(ett.getValue()!=Val.UNSPECIFIED) - permissionsS.getCellByPosition(hldrIndex+1,permIndex+1).setFormula(String.valueOf(ett.getValue().toChar())); - } - } - // Writing the DEFAULT column - for(int i = 0;i dg.implies(sp))) - permissionsS.getCellByPosition(defaultHolderCol, i+1).setFormula("."); - else - permissionsS.getCellByPosition(defaultHolderCol, i+1).setFormula("_"); - } - if(writeEverything) { - for(int j = 0;j T qi(Class aType, Object o) { - return UnoRuntime.queryInterface(aType, o); - } - -} diff --git a/src/com/bernard/math/GraphFunctions.java b/src/main/java/com/bernard/math/GraphFunctions.java similarity index 100% rename from src/com/bernard/math/GraphFunctions.java rename to src/main/java/com/bernard/math/GraphFunctions.java diff --git a/src/com/bernard/math/SortFunctions.java b/src/main/java/com/bernard/math/SortFunctions.java similarity index 100% rename from src/com/bernard/math/SortFunctions.java rename to src/main/java/com/bernard/math/SortFunctions.java diff --git a/src/com/bernard/math/graph/GraphCycleException.java b/src/main/java/com/bernard/math/graph/GraphCycleException.java similarity index 100% rename from src/com/bernard/math/graph/GraphCycleException.java rename to src/main/java/com/bernard/math/graph/GraphCycleException.java diff --git a/src/com/bernard/permissions/PermissionContext.java b/src/main/java/com/bernard/permissions/PermissionContext.java similarity index 100% rename from src/com/bernard/permissions/PermissionContext.java rename to src/main/java/com/bernard/permissions/PermissionContext.java diff --git a/src/com/bernard/permissions/StringPermission.java b/src/main/java/com/bernard/permissions/StringPermission.java similarity index 100% rename from src/com/bernard/permissions/StringPermission.java rename to src/main/java/com/bernard/permissions/StringPermission.java diff --git a/src/main/java/com/bernard/permissions/tableured/FileManager.java b/src/main/java/com/bernard/permissions/tableured/FileManager.java new file mode 100644 index 0000000..f71ad10 --- /dev/null +++ b/src/main/java/com/bernard/permissions/tableured/FileManager.java @@ -0,0 +1,313 @@ +package com.bernard.permissions.tableured; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.jopendocument.dom.ODPackage; +import org.jopendocument.dom.Style; +import org.jopendocument.dom.StyleDesc; +import org.jopendocument.dom.spreadsheet.MutableCell; +import org.jopendocument.dom.spreadsheet.Sheet; +import org.jopendocument.dom.spreadsheet.SpreadSheet; +import org.jopendocument.dom.spreadsheet.TableStyle; +import org.jopendocument.model.office.OfficeAutomaticStyles; +import org.jopendocument.model.style.StyleStyle; +import org.jopendocument.model.style.StyleTableRowProperties; + +import com.bernard.permissions.StringPermission; +import com.bernard.permissions.tableured.TPermissionContext.Inheritance; +import com.bernard.permissions.tableured.TPermissionContext.InheritancePolicy; +import com.bernard.permissions.tableured.TPermissionContext.Val; + +public class FileManager { + + public static final int MAX_ROW = 3141; + public static final int MAX_COL = 3141; + + //TODO: remove «throws Exception» for more precise exceptions + + public static final TPermissionContext readFromFile(File f) throws Exception { + + ODPackage odp; + SpreadSheet doc; + ; + odp = ODPackage.createFromFile(f); + doc = odp.getSpreadSheet(); + + // Variables de sortie: + Set defaultGiven = new HashSet<>(); + Map> specs = new HashMap<>(); + Map> inheritance = new HashMap<>(); + + + for (int s=0;s holders = new ArrayList<>(); + // PermName,…,…,…,Default + for(defaultColIndex = 1;!table.getCellAt(defaultColIndex+1, 0).getTextValue().equals("#~END~#") && defaultColIndex thisSpec = new HashMap<>(); + + + + for(int hi=0;hi inhz = null; + + for(int col = 1;!table.getCellAt(col, 0).getTextValue().equals("#~END~#") && col <= MAX_COL;col++) { + String rule = table.getCellAt(col, i).getTextValue(); + if(!rule.isBlank()) { + InheritancePolicy ipol = InheritancePolicy.fromChar(rule.charAt(0)); + String motherHolderName = (ipol==InheritancePolicy.ALL)?rule:rule.substring(1); + + if(inhz==null) + inhz = new ArrayList<>(); + inhz.add(new Inheritance(motherHolderName, ipol)); + } + } + if(inhz!=null) + inheritance.put(holder, inhz); + + + } + + + } + } + + System.out.println(defaultGiven); + System.out.println(specs); + System.out.println(inheritance); + + TPermissionContext tpc = new TPermissionContext(defaultGiven, specs, inheritance); + if(tpc.anyCycle()) + throw new IllegalArgumentException("Cycle detected !"); + + return tpc; + } + + public static final void writeToFile(File f,TPermissionContext tpc) throws Exception { + + File baseFile = new File(FileManager.class.getResource("/stringPermissionBase.ods").toURI()); + + ODPackage odp = ODPackage.createFromFile(baseFile); + SpreadSheet doc = odp.getSpreadSheet(); + + + Sheet permissionsS = doc.getSheet("Permissions"); + Sheet permissionsCompleteS = doc.getSheet("Permissions-complete"); + Sheet holdersS = doc.getSheet("Holders"); + + + // ----- Permissions sheet ----- + + writePermissionsSheetOutline(tpc, odp, permissionsS,false); + + + + + //TODO: Ajouter le support pour les holders qui commencent par un + ou un - (avec ++=+, +++=++, ...) + //TODO: Faire un tri qui «garde la structure du graphe d'héritage» + + // ----- Heritance sheet ----- + List enfants = tpc.inheritance.keySet().stream().sorted().collect(Collectors.toList()); + + holdersS.getCellAt(0, 0).setValue("Holder");; + holdersS.getCellAt(1, 0).setValue("Héritages");; + System.out.println("TCP Inheritance: "+tpc.inheritance); + int maxCol = 0; + for(int i=0;i cellEnft = holdersS.getCellAt(0,i+1); + System.out.println("Cell gotten;"+enfants.get(i)); + cellEnft.setValue(enfants.get(i)); + System.out.println("Cell value setted"); + cellEnft.setStyleName((i%2==0)?"HeritageHolderEven":"HeritageHolderOdd"); + System.out.println("Super writing"); + List parents = tpc.inheritance.get(enfants.get(i)); + for (int j = 0; j < parents.size(); j++) { + String toWrite = parents.get(j).policy.toChar()+parents.get(j).holder; + holdersS.getCellAt(j+1, i+1).setValue(toWrite); + } + maxCol = Math.max(maxCol, parents.size()); + } + + System.out.println("Setting the style"); + // Adding the style on the heritance core. + holdersS.getCellAt(1,0).merge(1, maxCol); + for(int i=0;i permissions = Stream.concat( + tpc.specs.keySet().stream(), + tpc.defaultGiven.stream() + ).distinct().sorted().collect(Collectors.toList()); + List permSpecHolders = Stream.concat(tpc.inheritance.keySet().stream(),tpc.specs.values().stream().flatMap(m -> m.keySet().stream())).distinct().sorted().collect(Collectors.toList()); + //TODO: Find a way to distinct and sorted at the same time + for (int i = 0; i < permissions.size(); i++) { + MutableCell cell = permissionsS.getCellAt(0,i+1); + cell.setValue(permissions.get(i).toString()); + cell.setStyleName((i%2==0)?"SpecPermissionEven":"SpecPermissionOdd"); + } + for (int j = 0; j < permSpecHolders.size(); j++) { + MutableCell cell = permissionsS.getCellAt(j+1,0); + cell.setValue(permSpecHolders.get(j)); + cell.setStyleName((j%2==0)?"SpecHolderEven":"SpecHolderOdd"); + } + + int defaultHolderCol = permSpecHolders.size()+1; + MutableCell celld = permissionsS.getCellAt(defaultHolderCol,0); + celld.setValue("#~DEFAULT~#"); + celld.setStyleName("SpecHolderDefault"); + + for(Entry> etry : tpc.specs.entrySet()) { + int permIndex = Collections.binarySearch(permissions, etry.getKey()); + for(Entry ett : etry.getValue().entrySet()) { + int hldrIndex = Collections.binarySearch(permSpecHolders, ett.getKey()); + if(ett.getValue()!=Val.UNSPECIFIED) + permissionsS.getCellAt(hldrIndex+1,permIndex+1).setValue(String.valueOf(ett.getValue().toChar())); + } + } + // Writing the DEFAULT column + for(int i = 0;i dg.implies(sp))) + permissionsS.getCellAt(defaultHolderCol, i+1).setValue("."); + else + permissionsS.getCellAt(defaultHolderCol, i+1).setValue("_"); + } + if(writeEverything) { + for(int j = 0;j autoStyles = permissionsS.getStyleDesc(); + permissionsS.getStyleDesc().createAutoStyle(odp); + + Style style = autoStyles.getAllStyles().iterator().next(); + + changeTableSheetRangeStyleName(permissionsS,1, 1, defaultHolderCol, permissions.size(), style.getName()); + } + + private static void changeTableSheetRangeStyleName(Sheet ot, int startCol, int startRow, int endCol, int endRow, String styleName) { + for(int col=startCol; col<=endCol;col++) + for(int row=startRow; row<=endRow;row++) + ot.getCellAt(col,row).setStyleName(styleName); + + } + +} diff --git a/src/com/bernard/permissions/tableured/TPermissionContext.java b/src/main/java/com/bernard/permissions/tableured/TPermissionContext.java similarity index 100% rename from src/com/bernard/permissions/tableured/TPermissionContext.java rename to src/main/java/com/bernard/permissions/tableured/TPermissionContext.java diff --git a/stringPermissionBase.ods b/src/main/resources/stringPermissionBase.ods similarity index 100% rename from stringPermissionBase.ods rename to src/main/resources/stringPermissionBase.ods diff --git a/src/com/bernard/permissions/TestMain.java b/src/test/java/com/bernard/permissions/TestMain.java similarity index 62% rename from src/com/bernard/permissions/TestMain.java rename to src/test/java/com/bernard/permissions/TestMain.java index 3c79b47..1b15809 100644 --- a/src/com/bernard/permissions/TestMain.java +++ b/src/test/java/com/bernard/permissions/TestMain.java @@ -1,19 +1,22 @@ package com.bernard.permissions; import java.io.File; +import java.io.FileInputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import javax.security.auth.login.LoginException; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; +import org.junit.rules.Timeout; import com.bernard.permissions.tableured.FileManager; import com.bernard.permissions.tableured.TPermissionContext; import com.bernard.permissions.tableured.TPermissionContext.Inheritance; import com.bernard.permissions.tableured.TPermissionContext.Val; -import com.sun.star.uno.Exception; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; @@ -25,42 +28,40 @@ import net.dv8tion.jda.api.requests.GatewayIntent; public class TestMain { - public static void main(String[] args) throws Exception, LoginException, InterruptedException{ - - testDiscordRead(); - - System.out.println("OK, i'm done !"); - System.exit(0);; - } + @Rule + public final TestRule globalTimeout = Timeout.seconds(20); - public static void testReadAndWrite() { - try { - TPermissionContext tpc = FileManager.readFromFile(new File("test.ods")); - String[] perms = {"julia","julia.bdd","julia.bdd.read","julia.bdd.write","julia.messages","julia.coucou"}; - String[] holders = {"Admin","Developeur","Client","Étranger","Mysaa","Bernard","Zlopeg","Ferbex","Pbalkany"}; - for (String perm : perms) { - for (String holder : holders) { - System.out.println(holder+" can "+perm+" : "+tpc.can(StringPermission.parse(perm), holder)); - } - System.out.println("========================="); + @Test public void testReadAndWrite() throws Exception { + + File readFrom = new File(TestMain.class.getResource("/test.ods").toURI()); + TPermissionContext tpc = FileManager.readFromFile(readFrom); + + String[] perms = {"julia","julia.bdd","julia.bdd.read","julia.bdd.write","julia.messages","julia.coucou"}; + String[] holders = {"Admin","Developeur","Client","Étranger","Mysaa","Bernard","Zlopeg","Ferbex","Pbalkany"}; + for (String perm : perms) { + for (String holder : holders) { + System.out.println(holder+" can "+perm+" : "+tpc.can(StringPermission.parse(perm), holder)); } - System.out.println(tpc); - System.out.println("Writing back to file."); - - new File("testout.ods").delete(); - FileManager.writeToFile(new File("testout.ods"), tpc); - System.out.println("Re-reading it"); - TPermissionContext newTPC = FileManager.readFromFile(new File("testout.ods")); - System.out.println(tpc); - System.out.println("Equals test: "+tpc.equals(newTPC)); - System.out.println("Writing to another file"); - FileManager.writeToFile(new File("testoutout.ods"), newTPC); - } catch (Exception e) { - e.printStackTrace(); + System.out.println("========================="); } + System.out.println(tpc); + System.out.println("Writing back to file."); + + File testout = File.createTempFile("testout", "ods"); + FileManager.writeToFile(testout, tpc); + + System.out.println("Re-reading it"); + TPermissionContext newTPC = FileManager.readFromFile(testout); + System.out.println(tpc); + System.out.println("Equals test: "+tpc.equals(newTPC)); + + System.out.println("Writing to another file"); + File testoutout = File.createTempFile("testoutout", "ods"); + FileManager.writeToFile(testoutout, newTPC); + } - public static void testStringPermissions() { + @Test public void testStringPermissions() { System.out.println(StringPermission.spR); System.out.println(StringPermission.optionsR); @@ -69,8 +70,13 @@ public class TestMain { } - public static void testDiscordRead() throws LoginException, InterruptedException, Exception { - JDA jda = JDABuilder.createDefault("",GatewayIntent.GUILD_MEMBERS,GatewayIntent.values()).build(); + @Test public void testDiscordRead() throws Exception { + + FileInputStream fis = new FileInputStream("/home/mysaa/julia.token"); + String token = new String(fis.readAllBytes()); + fis.close(); + + JDA jda = JDABuilder.createDefault(token,GatewayIntent.GUILD_MEMBERS,GatewayIntent.values()).build(); jda.awaitReady(); Guild g = jda.getGuildById(222947179017404416L); @@ -121,6 +127,7 @@ public class TestMain { FileManager.writeToFile(new File("discordout.ods"), tpc); + jda.shutdown(); } } diff --git a/test.ods b/src/test/resources/test.ods similarity index 100% rename from test.ods rename to src/test/resources/test.ods