From ec7b6d3c7539f352b39dd61388ac341808a9741a Mon Sep 17 00:00:00 2001 From: "navid.sassan" Date: Mon, 7 Dec 2020 16:00:29 +0100 Subject: [PATCH] added s11 --- 11/Aufgabenstellung Praktikum 11.pdf | Bin 0 -> 90248 bytes 11/build.gradle | 41 +++ 11/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58694 bytes 11/gradle/wrapper/gradle-wrapper.properties | 5 + 11/gradlew | 183 ++++++++++ 11/gradlew.bat | 103 ++++++ 11/settings.gradle | 10 + 11/src/main/java/ch/zhaw/ads/AnyServer.java | 13 + .../java/ch/zhaw/ads/CommandExecutor.java | 21 ++ 11/src/main/java/ch/zhaw/ads/ExBox.java | 18 + 11/src/main/java/ch/zhaw/ads/ExBoxFrame.java | 314 ++++++++++++++++++ .../main/java/ch/zhaw/ads/GraphicPanel.java | 88 +++++ 11/src/main/java/ch/zhaw/ads/HttpsClient.java | 98 ++++++ .../main/java/ch/zhaw/ads/ServerFactory.java | 68 ++++ 14 files changed, 962 insertions(+) create mode 100644 11/Aufgabenstellung Praktikum 11.pdf create mode 100644 11/build.gradle create mode 100644 11/gradle/wrapper/gradle-wrapper.jar create mode 100644 11/gradle/wrapper/gradle-wrapper.properties create mode 100755 11/gradlew create mode 100644 11/gradlew.bat create mode 100644 11/settings.gradle create mode 100644 11/src/main/java/ch/zhaw/ads/AnyServer.java create mode 100644 11/src/main/java/ch/zhaw/ads/CommandExecutor.java create mode 100644 11/src/main/java/ch/zhaw/ads/ExBox.java create mode 100644 11/src/main/java/ch/zhaw/ads/ExBoxFrame.java create mode 100644 11/src/main/java/ch/zhaw/ads/GraphicPanel.java create mode 100644 11/src/main/java/ch/zhaw/ads/HttpsClient.java create mode 100644 11/src/main/java/ch/zhaw/ads/ServerFactory.java diff --git a/11/Aufgabenstellung Praktikum 11.pdf b/11/Aufgabenstellung Praktikum 11.pdf new file mode 100644 index 0000000000000000000000000000000000000000..07d94bbe561835e4f0b7f92ee85f7e3e02cea418 GIT binary patch literal 90248 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 F{$F2+T0Z~) literal 0 HcmV?d00001 diff --git a/11/build.gradle b/11/build.gradle new file mode 100644 index 0000000..11aaf39 --- /dev/null +++ b/11/build.gradle @@ -0,0 +1,41 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java project to get you started. + * For more details take a look at the Java Quickstart chapter in the Gradle + * User Manual available at https://docs.gradle.org/6.3/userguide/tutorial_java_projects.html + */ + +plugins { + // Apply the java plugin to add support for Java + id 'java' + + // Apply the application plugin to add support for building a CLI application. + id 'application' +} + +repositories { + // Use jcenter for resolving dependencies. + // You can declare any Maven/Ivy/file repository here. + jcenter() +} + +dependencies { + // This dependency is used by the application. + implementation 'com.google.guava:guava:28.2-jre' + implementation 'junit:junit:4.12' + + // Use JUnit test framework + testImplementation 'junit:junit:4.12' +} + +application { + // Define the main class for the application. + mainClassName = 'ch.zhaw.ads.ExBox' +} + +test { + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + } +} diff --git a/11/gradle/wrapper/gradle-wrapper.jar b/11/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..490fda8577df6c95960ba7077c43220e5bb2c0d9 GIT binary patch literal 58694 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 literal 0 HcmV?d00001 diff --git a/11/gradle/wrapper/gradle-wrapper.properties b/11/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a4b4429 --- /dev/null +++ b/11/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/11/gradlew b/11/gradlew new file mode 100755 index 0000000..2fe81a7 --- /dev/null +++ b/11/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/11/gradlew.bat b/11/gradlew.bat new file mode 100644 index 0000000..62bd9b9 --- /dev/null +++ b/11/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/11/settings.gradle b/11/settings.gradle new file mode 100644 index 0000000..35c664f --- /dev/null +++ b/11/settings.gradle @@ -0,0 +1,10 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/6.3/userguide/multi_project_builds.html + */ + +rootProject.name = 'praktikum01' diff --git a/11/src/main/java/ch/zhaw/ads/AnyServer.java b/11/src/main/java/ch/zhaw/ads/AnyServer.java new file mode 100644 index 0000000..e8dfb07 --- /dev/null +++ b/11/src/main/java/ch/zhaw/ads/AnyServer.java @@ -0,0 +1,13 @@ +package ch.zhaw.ads; + +public class AnyServer implements CommandExecutor { + + @Override + public String execute(String command) { + StringBuffer result = new StringBuffer(100); + result.append("Die Eingabe war \""); + result.append(command); + result.append("\"\n"); + return result.toString(); + } +} diff --git a/11/src/main/java/ch/zhaw/ads/CommandExecutor.java b/11/src/main/java/ch/zhaw/ads/CommandExecutor.java new file mode 100644 index 0000000..57605f0 --- /dev/null +++ b/11/src/main/java/ch/zhaw/ads/CommandExecutor.java @@ -0,0 +1,21 @@ +/** + * CommandExecutor -- Praktikum Experimentierkasten -- SW3 Dieses Interface muss + * von jedem Server implementiert werden. + * + * @author E. Mumprecht + * @version 1.0 -- Geruest fuer irgendeinen Server + * @version 1.1 -- K. Rege Fehlerueckgabe hinzugefuegt + */ +package ch.zhaw.ads; + +public interface CommandExecutor { + + /** + * execute -- nimmt eine Kommandozeile, tut irgendetwas gescheites, und + * berichtet das Resultat. + * + * @param command Kommandozeile + * @return Resultat, ueblicherweise eine oder mehrere Zeilen. + */ + String execute(String command) throws Exception; +}//interface CommandExecutor \ No newline at end of file diff --git a/11/src/main/java/ch/zhaw/ads/ExBox.java b/11/src/main/java/ch/zhaw/ads/ExBox.java new file mode 100644 index 0000000..5fb3f64 --- /dev/null +++ b/11/src/main/java/ch/zhaw/ads/ExBox.java @@ -0,0 +1,18 @@ +/** + * @author K. Rege + * @version 1.0 -- Experimentierkasten + */ +package ch.zhaw.ads; + +import java.awt.*; +import java.io.*; +import java.awt.event.*; + +public class ExBox { + + public static void main(String[] args) throws Exception { + ExBoxFrame f = new ExBoxFrame(); + f.setLocationRelativeTo(null); + f.setVisible(true); + } +} diff --git a/11/src/main/java/ch/zhaw/ads/ExBoxFrame.java b/11/src/main/java/ch/zhaw/ads/ExBoxFrame.java new file mode 100644 index 0000000..4d83da9 --- /dev/null +++ b/11/src/main/java/ch/zhaw/ads/ExBoxFrame.java @@ -0,0 +1,314 @@ +/** + * @(#)ExBoxFrame.java + * + * JFC ExBox application + * + * @author K.Rege + * @version 1.00 2014/2/3 + * @version 1.01 2016/8/2 + * @version 2.00 2017/8/30 Test + * @version 2.01 2018/2/5 AutoScale + * @version 2d.02 2018/2/5 Reconnect (inspired by S. Kunz) + */ + +package ch.zhaw.ads; + + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.io.*; +import java.util.*; + +import org.junit.runner.JUnitCore; +import org.junit.runner.Result; +import org.junit.runner.notification.Failure; +import org.junit.runner.notification.RunListener; +import org.junit.runner.Description; + + +public class ExBoxFrame extends JFrame implements ActionListener, ItemListener { + private static double SCALE = 1; + private JMenuItem connect, open, test, textView, graphicView; + private JButton enter; + private JTextField arguments; + private JCheckBox reconnect; + private JComboBox history; + private JTextArea output; + private JScrollPane scrollPane; + private CommandExecutor command; + private boolean graphicOn; + private GraphicPanel graphic; + private String lastServer; + + public static void setFontSize(int size) { + Set keySet = UIManager.getLookAndFeelDefaults().keySet(); + Object[] keys = keySet.toArray(new Object[keySet.size()]); + for (Object key : keys) { + if (key != null && key.toString().toLowerCase().contains("font")) { + Font font = UIManager.getDefaults().getFont(key); + if (font != null) { + font = font.deriveFont((float) size); + UIManager.put(key, font); + } + } + } + } + + private void initMenu() { + JMenuBar menuBar = new JMenuBar(); + JMenu menuFile = new JMenu(); + JMenuItem menuFileExit = new JMenuItem(); + menuFile.setText("File"); + menuFileExit.setText("Exit"); + + // Add action listener.for the menu button + menuFileExit.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + ExBoxFrame.this.windowClosed(); + } + }); + + menuFile.add(menuFileExit); + menuBar.add(menuFile); + + JMenu menuServer = new JMenu("Server"); + menuBar.add(menuServer); + connect = new JMenuItem("Connect"); + connect.addActionListener(this); + menuServer.add(connect); + test = new JMenuItem("Test"); + test.addActionListener(this); + menuServer.add(test); + + JMenu menuView = new JMenu("View"); + menuBar.add(menuView); + textView = new JMenuItem("Text"); + textView.addActionListener(this); + menuView.add(textView); + graphicView = new JMenuItem("Graphic"); + graphicView.addActionListener(this); + menuView.add(graphicView); + + open = new JMenuItem("Open..."); + open.addActionListener(this); + menuFile.insert(open, 0); + setJMenuBar(menuBar); + } + + private void initComponents() { + setLayout(new BorderLayout()); + output = new JTextArea(); + scrollPane = new JScrollPane(output); + add(BorderLayout.CENTER, scrollPane); + + Panel panel = new Panel(new BorderLayout()); + arguments = new JTextField(); + arguments.addActionListener(this); + panel.add(BorderLayout.CENTER, arguments); + enter = new JButton("enter"); + enter.addActionListener(this); + panel.add(BorderLayout.EAST, enter); + reconnect = new JCheckBox("reconnect",true); + panel.add(BorderLayout.WEST,reconnect); + history = new JComboBox(); + history.addItemListener(this); + panel.add(BorderLayout.SOUTH, history); + add(BorderLayout.SOUTH, panel); + } + + /** + * get default path for file open dialog + */ + String getPathCompiled() { + String pathtocompiled = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); + pathtocompiled = pathtocompiled.replace("%20", " ").replace("/", + File.separator); + pathtocompiled += getClass().getPackage().getName().replace(".", + File.separator); + if (System.getProperty("os.name").toLowerCase().indexOf("win") >= 0) { + pathtocompiled = pathtocompiled.substring(1); + } + return pathtocompiled; + } + + /** + * The constructor + */ + public ExBoxFrame() throws Exception { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception ex) { + ex.printStackTrace(); + } + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + if (screenSize.getWidth() > 1920) { + SCALE = 2; + } + setFontSize((int) (11 * SCALE)); + setSize(new Dimension((int) (400 * SCALE), (int) (400 * SCALE))); + setTitle("ExBox"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + initMenu(); + initComponents(); + } + + private void error(String s) { + output.append("\nERROR:" + s + "\n"); + } + + private void interpret(String args) throws Exception { + if (reconnect.isSelected() && lastServer != null) { + command = ServerFactory.createServer(lastServer); + } + if (!arguments.getText().equals(history.getItemAt(0)) + && !arguments.getText().equals(history.getSelectedItem())) { + history.insertItemAt(arguments.getText(), 0); + } + if (command == null) { + error("no Server connected"); + } else { + String res = command.execute(args); + if (graphicOn) { + graphic.setFigure(res); + } else { + output.append(res); + } + } + } + + private void setGraphicView() { + if (graphicOn) { + return; + } + remove(scrollPane); + graphic = new GraphicPanel(); + output.removeNotify(); + add(BorderLayout.CENTER, graphic); + graphicOn = true; + validate(); + repaint(); + } + + private void setTextView() { + if (!graphicOn) { + return; + } + remove(graphic); + add(BorderLayout.CENTER, scrollPane); + graphicOn = false; + validate(); + repaint(); + } + + private String openFileDialog(String startDirectory, String pattern) { + FileDialog fd = new FileDialog(this, "Open"); + if (pattern != null) { + fd.setFile(pattern); + } + if (startDirectory != null) { + fd.setDirectory(startDirectory); + } + fd.setVisible(true); + return fd.getDirectory() + fd.getFile(); + } + + private void testCommand() throws Exception { + final java.util.List failed = new LinkedList(); + final java.util.List finished = new LinkedList(); + + JUnitCore runner = new JUnitCore(); + + String name = openFileDialog(getPathCompiled(), "*Test.class"); + runner.addListener(new RunListener() { + @Override + public void testFinished(Description description) throws Exception { + finished.add(description.getDisplayName()); + } + + @Override + public void testFailure(Failure failure) throws Exception { + failed.add(failure.getDescription().getDisplayName()); + } + }); + Class testClass = ServerFactory.loadClass(name); + Result result = runner.run(testClass); + + for (String test : finished) { + if (!failed.contains(test)) { + output.append(test + ": OK\n"); + } + } + for (Failure failure : result.getFailures()) { + output.append(failure.toString() + " ERROR\n"); + } + output.append( + "TESTS PASSED: " + + (result.wasSuccessful() + ? "OK \u263a" + : result.getFailures().size() + " ERRORS") + + "\n"); + } + + private void connectCommand() throws Exception { + String name = openFileDialog(getPathCompiled(), "*Server.class"); + command = ServerFactory.createServer(name); + lastServer = name; + String fullClassName = command.getClass().getName(); + String simpleClassName = fullClassName.substring( + fullClassName.lastIndexOf('.') + 1); + setTitle("ExBox connected to " + simpleClassName); + + } + + private void openFile() throws Exception { + String name = openFileDialog(null, null); + + BufferedReader br = new BufferedReader( + new InputStreamReader(new FileInputStream(name), "ISO-8859-1")); + StringBuffer b = new StringBuffer(); + String line; + while ((line = br.readLine()) != null) { + b.append(line); + b.append('\n'); + } + interpret(b.toString()); + } + + public void itemStateChanged(ItemEvent e) { + try { + arguments.setText((String) e.getItem()); + interpret(arguments.getText()); + } catch (Throwable ex) { + error(ex.toString()); + } + } + + public void actionPerformed(ActionEvent e) { + try { + if ((e.getSource() == arguments) || (e.getSource() == enter)) { + interpret(arguments.getText()); + } else if (e.getSource() == connect) { + connectCommand(); + } else if (e.getSource() == test) { + testCommand(); + } else if (e.getSource() == open) { + openFile(); + } else if (e.getSource() == textView) { + setTextView(); + } else if (e.getSource() == graphicView) { + setGraphicView(); + } + } catch (Throwable ex) { + ex.printStackTrace(); + error(ex.toString()); + } + } + + /** + * Shutdown procedure when run as an application. + */ + protected void windowClosed() { + System.exit(0); + } +} diff --git a/11/src/main/java/ch/zhaw/ads/GraphicPanel.java b/11/src/main/java/ch/zhaw/ads/GraphicPanel.java new file mode 100644 index 0000000..e5cf666 --- /dev/null +++ b/11/src/main/java/ch/zhaw/ads/GraphicPanel.java @@ -0,0 +1,88 @@ +package ch.zhaw.ads; + + +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; +import java.util.*; + + +public class GraphicPanel extends JPanel { + + String figure; + + public void setFigure(String figure) { + this.figure = figure; + paint(getGraphics()); + } + + private void drawRect(Graphics g, double x, double y, double width, double height, String style) { + int w = getWidth(); + int h = getHeight(); + int ix0 = (int) (w * x); + int iy0 = (int) (h * y); + int ix1 = (int) (w * (x + width)); + int iy1 = (int) (h * (y + height)); + if (style.equals("draw")) { + g.drawRect(ix0, h - iy1, ix1 - ix0, iy1 - iy0); + } else { + g.fillRect(ix0, h - iy1, ix1 - ix0, iy1 - iy0); + } + } + + private void drawFigure(Graphics g) { + if (figure != null) { + int w = getWidth(); + int h = getHeight(); + g.setColor(Color.black); + StringTokenizer tok = new StringTokenizer(figure, " <>=/,\"\n"); + while (tok.hasMoreTokens()) { + String fig = tok.nextToken(); + if (fig.equals("line")) { + tok.nextToken(); + double x1 = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double y1 = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double x2 = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double y2 = Double.parseDouble(tok.nextToken()); + g.drawLine((int) (x1 * w), h - (int) (y1 * h), + (int) (x2 * w), h - (int) (y2 * h)); + } else if (fig.equals("rect")) { + tok.nextToken(); + double x = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double y = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double width = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double height = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + String style = tok.nextToken(); + drawRect(g, x, y, width, height, style); + } else if (fig.equals("color")) { + tok.nextToken(); + int red = Integer.parseInt(tok.nextToken()); + tok.nextToken(); + int green = Integer.parseInt(tok.nextToken()); + tok.nextToken(); + int blue = Integer.parseInt(tok.nextToken()); + g.setColor(new Color(red, green, blue)); + } + } + } + } + + private void clear(Graphics g) { + int w = getWidth(); + int h = getHeight(); + g.setColor(new Color(240, 240, 240)); + g.fillRect(0, 0, w, h); + } + + public void paint(Graphics g) { + clear(g); + drawFigure(g); + } +} \ No newline at end of file diff --git a/11/src/main/java/ch/zhaw/ads/HttpsClient.java b/11/src/main/java/ch/zhaw/ads/HttpsClient.java new file mode 100644 index 0000000..29db864 --- /dev/null +++ b/11/src/main/java/ch/zhaw/ads/HttpsClient.java @@ -0,0 +1,98 @@ +package ch.zhaw.ads; + +import java.net.MalformedURLException; +import java.net.URL; +import java.security.cert.Certificate; +import java.io.*; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLPeerUnverifiedException; + + +public class HttpsClient { + + public static void main(String[] args) { + new HttpsClient().testIt(); + } + + private void testIt() { + + String https_url = "https://www.google.com/"; + URL url; + try { + + url = new URL(https_url); + HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + + // dumpl all cert info + print_https_cert(con); + + // dump all the content + print_content(con); + + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + private void print_https_cert(HttpsURLConnection con) { + + if (con != null) { + + try { + + System.out.println("Response Code : " + con.getResponseCode()); + System.out.println("Cipher Suite : " + con.getCipherSuite()); + System.out.println("\n"); + + Certificate[] certs = con.getServerCertificates(); + for (Certificate cert : certs) { + System.out.println("Cert Type : " + cert.getType()); + System.out.println("Cert Hash Code : " + cert.hashCode()); + System.out.println( + "Cert Public Key Algorithm : " + + cert.getPublicKey().getAlgorithm()); + System.out.println( + "Cert Public Key Format : " + + cert.getPublicKey().getFormat()); + System.out.println("\n"); + } + + } catch (SSLPeerUnverifiedException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + } + + private void print_content(HttpsURLConnection con) { + if (con != null) { + + try { + + System.out.println("****** Content of the URL ********"); + BufferedReader br = new BufferedReader( + new InputStreamReader(con.getInputStream())); + + String input; + + while ((input = br.readLine()) != null) { + System.out.println(input); + } + br.close(); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + } + +} diff --git a/11/src/main/java/ch/zhaw/ads/ServerFactory.java b/11/src/main/java/ch/zhaw/ads/ServerFactory.java new file mode 100644 index 0000000..f6acba6 --- /dev/null +++ b/11/src/main/java/ch/zhaw/ads/ServerFactory.java @@ -0,0 +1,68 @@ +/** + * ServerFactory -- Praktikum Experimentierkasten -- + * + * @author K. Rege + * @version 1.0 -- Factory zur Erstellung von Server Objekten + * @version 2.0 -- Dynamisches Nachladen + */ +package ch.zhaw.ads; + +import java.io.*; + +/* Classloader that handles file path of class + */ +class MyClassLoader extends ClassLoader { + private String path; + + MyClassLoader(ClassLoader parent) { + super(parent); + } + + private byte[] getBytes(String name) { + try { + RandomAccessFile file = new RandomAccessFile(name, "r"); + byte data[] = new byte[(int) file.length()]; + file.readFully(data); + file.close(); + return data; + } catch (IOException e) {} + return null; + } + + /** + * @name filename of class + */ + public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + // System.out.println("load:" + name + " " + resolve); + Class clazz; + byte[] classData = getBytes(name); + if (classData != null) { + clazz = defineClass(classData, 0, classData.length); + path = name.substring(0, + name.length() - clazz.getName().length() - ".class".length()); + return clazz; + } + if (!resolve) { + classData = getBytes(path + name.replace(".", File.separator) + ".class"); + if (classData != null) { + return defineClass(classData, 0, classData.length); + } + } + return findSystemClass(name); + } +} + + +public class ServerFactory { + + public static Class loadClass(String name) throws Exception { + MyClassLoader myClassLoader = new MyClassLoader( + MyClassLoader.class.getClassLoader()); + Class clazz = myClassLoader.loadClass(name, true); + return clazz; + } + + public static CommandExecutor createServer(String name) throws Exception { + return (CommandExecutor) loadClass(name).newInstance(); + } +}