Java tutorial
/** * Copyright (c) 2014 Matthias Jaenicke <matthias.jaenicke@student.kit.edu>, * Matthias Plappert <undkc@student.kit.edu>, * Julien Duman <uncyc@student.kit.edu>, * Christian Dreher <uaeef@student.kit.edu>, * Wasilij Beskorovajnov <uajkm@student.kit.edu> and * Aydin Tekin <aydin.tekin@student.kit.edu> * * Released under the MIT license (refer to LICENSE.md) * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package edu.kit.iks.Cryptographics.Vigenere; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import org.xnap.commons.i18n.I18n; import edu.kit.iks.Cryptographics.Vigenere.Demonstration.*; import edu.kit.iks.Cryptographics.Vigenere.Experiment.FirstExperimentController; import edu.kit.iks.Cryptographics.Vigenere.Explanation.FirstExplanationController; import edu.kit.iks.Cryptographics.Vigenere.Explanation.SecondExplanationController; import edu.kit.iks.CryptographicsLib.AbstractVisualizationInfo; import edu.kit.iks.CryptographicsLib.Configuration; import edu.kit.iks.CryptographicsLib.InformationController; import edu.kit.iks.CryptographicsLib.Logger; import edu.kit.iks.CryptographicsLib.VisualizationDifficulty; /** * @author Aydin Tekin * This class provides all needed information for the vigenere-section */ public class VigenereVisualizationInfo extends AbstractVisualizationInfo { /** * Localization instance */ private static I18n i18n = Configuration.getInstance().getI18n(VigenereVisualizationInfo.class); /** * link to the resources */ private Element vigenereResources; /** * loads the resources which are bundled with the jar file */ private void loadResources() { SAXBuilder saxBuilder = new SAXBuilder(); InputStream is = this.getClass().getResourceAsStream("/vigenere/VigenereResources.xml"); try { // converted file to document object Document document = saxBuilder.build(is); // get root node from xml this.vigenereResources = document.getRootElement().getChild("vigenere"); } catch (JDOMException | IOException e) { Logger.error(e); } } /** * Constructor */ public VigenereVisualizationInfo() { loadResources(); } /** * returns the ID * @return ID */ public String getId() { return "vigenere"; } /** * returns the name * @return name */ public String getName() { return i18n.tr("Vigenre"); } /** * returns the description of vigenere. * @return description of vigenere. */ public String getDescription() { return i18n.tr( "Get to know how Vigenre fixed the weaknesses of Caesar to make a 'secure' cipher for many hundred years!"); } /** * returns the QRCode-source * @return QRCode-source */ public String getQRCodeContent() { return i18n.tr("http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher"); } /** * returns the offset in the timeline * @return offset in the timeline */ public float getTimelineOffset() { return 0.5f; } /** * returns the difficulty * @return difficulty */ public VisualizationDifficulty getDifficulty() { return VisualizationDifficulty.MEDIUM; } /** * gets the year of the cryptographic algorithm * @return year of the cryptographic algorithm */ public int getYear() { return 1600; //inaccurate } /** * returns all the needed classes for this algorithm * @return all the needed classes for this algorithm */ @SuppressWarnings("rawtypes") public List<Class> getControllerClasses() { List<Class> controllerClasses = new ArrayList<Class>(); controllerClasses.add(FirstDemonstrationController.class); controllerClasses.add(SecondDemonstrationController.class); controllerClasses.add(ThirdDemonstrationController.class); controllerClasses.add(FirstExperimentController.class); controllerClasses.add(FirstExplanationController.class); controllerClasses.add(SecondExplanationController.class); controllerClasses.add(InformationController.class); return controllerClasses; } /** * returns the link to the resources * @return link to the resources */ public Element getResources() { return vigenereResources; } }