/** Determine whether the current user has Windows administrator privileges. */ public static boolean isWinAdmin() { if (!isWinPlatform()) return false; // for (String group : new com.sun.security.auth.module.NTSystem().getGroupIDs()) { // if (group.equals("S-1-5-32-544")) return true; // "S-1-5-32-544" is a well-known // security identifier in Windows. If the current user has it then he/she/it is an // administrator. // } // return false; try { Class<?> ntsys = Class.forName("com.sun.security.auth.module.NTSystem"); if (ntsys != null) { Object groupObj = SystemUtils.invoke( ntsys.newInstance(), ntsys.getDeclaredMethod("getGroupIDs"), (Object[]) null); if (groupObj instanceof String[]) { for (String group : (String[]) groupObj) { if (group.equals("S-1-5-32-544")) return true; // "S-1-5-32-544" is a well-known security identifier in Windows. If the // current user has it then he/she/it is an administrator. } } } } catch (ReflectiveOperationException e) { System.err.println(e); } return false; }
/** * @return an instanciation of the given content-type class name, or null if class wasn't found */ public static ContentType getContentTypeFromClassName(String contentTypeClassName) { if (contentTypeClassName == null) contentTypeClassName = getAvailableContentTypes()[DEFAULT_CONTENT_TYPE_INDEX]; ContentType ct = null; try { Class clazz = Class.forName(contentTypeClassName); ct = (ContentType) clazz.newInstance(); } catch (ClassNotFoundException cnfex) { if (jpicedt.Log.DEBUG) cnfex.printStackTrace(); JPicEdt.getMDIManager() .showMessageDialog( "The pluggable content-type you asked for (class " + cnfex.getLocalizedMessage() + ") isn't currently installed, using default instead...", Localizer.currentLocalizer().get("msg.LoadingContentTypeClass"), JOptionPane.ERROR_MESSAGE); } catch (Exception ex) { if (jpicedt.Log.DEBUG) ex.printStackTrace(); JPicEdt.getMDIManager() .showMessageDialog( ex.getLocalizedMessage(), Localizer.currentLocalizer().get("msg.LoadingContentTypeClass"), JOptionPane.ERROR_MESSAGE); } return ct; }
/** * Handle the -biojava option * * <p>Command line syntax: art -biojava org.biojava.bio.seq.io.EmblLikeFormat foo.embl * * <p>BioJava formats: EmblLikeFormat, FastaFormat, GAMEFormat, GenbankFormat, PhredFormat */ private void handleBioJava(final String[] args) { if (args.length == 3) { final String class_name = args[1]; final String location = args[2]; final Document location_document = DocumentFactory.makeDocument(location); try { final Object biojava_object = Class.forName(class_name).newInstance(); final EntryInformation entry_information = Options.getArtemisEntryInformation(); final uk.ac.sanger.artemis.io.BioJavaEntry emblEntry; if (biojava_object instanceof SequenceFormat) { final SequenceFormat sequence_format = (SequenceFormat) biojava_object; emblEntry = new uk.ac.sanger.artemis.io.BioJavaEntry( entry_information, location_document, sequence_format); final Entry new_entry = new Entry(emblEntry); final EntryEdit new_entry_edit = makeEntryEdit(new_entry); new_entry_edit.setVisible(true); } else new MessageDialog(this, "not a SequenceFormat: " + class_name); } catch (IllegalAccessException e) { new MessageDialog(this, "cannot create class: " + class_name + " - IllegalAccessException"); } catch (ClassNotFoundException e) { new MessageDialog(this, "cannot find class: " + class_name); } catch (ClassCastException e) { new MessageDialog(this, class_name + " is not a sub-class of " + "SequenceFormat"); } catch (IOException e) { new MessageDialog(this, "I/O error while reading from " + location + ": " + e.getMessage()); } catch (NoSequenceException e) { new MessageDialog(this, location + " contained no sequence"); } catch (InstantiationException e) { new MessageDialog(this, "cannot instantiate " + class_name); } catch (OutOfRangeException e) { new MessageDialog( this, "read failed: one of the features in " + location + " has an out of range location: " + e.getMessage()); } } else new MessageDialog(this, "the -biojava option needs two arguments"); }