edu.kit.iks.Cryptographics.Vigenere.VigenereVisualizationInfo.java Source code

Java tutorial

Introduction

Here is the source code for edu.kit.iks.Cryptographics.Vigenere.VigenereVisualizationInfo.java

Source

/**
 * 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;
    }
}