From 02a88ea7fe8677771eaa9ce38dba8ca8edf6976b Mon Sep 17 00:00:00 2001 From: Caleb Fontenot Date: Thu, 27 Apr 2023 13:57:24 -0500 Subject: [PATCH] Extract Exam --- .gitignore | 2 + .../ProgrammingExam2_CalebFontenot/build.xml | 73 + .../manifest.mf | 3 + .../nbproject/build-impl.xml | 1771 +++++++++++++++++ .../nbproject/genfiles.properties | 8 + .../nbproject/project.properties | 86 + .../nbproject/project.xml | 15 + .../src/problem2/Contact.java | 111 ++ .../src/problem2/Main.java | 208 ++ .../src/problem2/MyContacts.java | 139 ++ .../src/problem2/Scramble.java | 29 + .../ProgrammingExam2_CalebFontenot.java | 22 + 12 files changed, 2467 insertions(+) create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/build.xml create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/manifest.mf create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/build-impl.xml create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/genfiles.properties create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/project.properties create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/project.xml create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Contact.java create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Main.java create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/MyContacts.java create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Scramble.java create mode 100644 Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/programmingexam2_calebfontenot/ProgrammingExam2_CalebFontenot.java diff --git a/.gitignore b/.gitignore index d32f6f4..8fc55e4 100644 --- a/.gitignore +++ b/.gitignore @@ -123,3 +123,5 @@ /Semester 2/Assignments/JavaFX_CalebFontenot/target/ /Semester 2/Assignments/JavaFX_CalebFontenot/nbproject/private/ /Semester 2/Assignments/JavaFX_CalebFontenot/build/ +/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/private/ +/Semester 2/Exams/ProgrammingExam2_CalebFontenot/build/ diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/build.xml b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/build.xml new file mode 100644 index 0000000..615bcff --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project ProgrammingExam2_CalebFontenot. + + + diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/manifest.mf b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/manifest.mf new file mode 100644 index 0000000..1574df4 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/build-impl.xml b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/build-impl.xml new file mode 100644 index 0000000..312aa37 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/build-impl.xml @@ -0,0 +1,1771 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/genfiles.properties b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/genfiles.properties new file mode 100644 index 0000000..fce93c7 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=3536f6ae +build.xml.script.CRC32=80acc44d +build.xml.stylesheet.CRC32=f85dc8f2@1.105.0.48 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=3536f6ae +nbproject/build-impl.xml.script.CRC32=22c114b3 +nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.105.0.48 diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/project.properties b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/project.properties new file mode 100644 index 0000000..98f8719 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/project.properties @@ -0,0 +1,86 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processor.options= +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.modulepath=\ + ${run.modulepath} +debug.test.classpath=\ + ${run.test.classpath} +debug.test.modulepath=\ + ${run.test.modulepath} +# Files in build.classes.dir which should be excluded from distribution jar +dist.archive.excludes= +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/ProgrammingExam2_CalebFontenot.jar +dist.javadoc.dir=${dist.dir}/javadoc +excludes= +includes=** +jar.compress=false +javac.classpath= +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.external.vm=true +javac.modulepath= +javac.processormodulepath= +javac.processorpath=\ + ${javac.classpath} +javac.source=1.8 +javac.target=1.8 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.modulepath=\ + ${javac.modulepath} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +main.class=programmingexam2_calebfontenot.ProgrammingExam2_CalebFontenot +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project. +# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. +# To set system properties for unit tests define test-sys-prop.name=value: +run.jvmargs= +run.modulepath=\ + ${javac.modulepath} +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +run.test.modulepath=\ + ${javac.test.modulepath} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/project.xml b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/project.xml new file mode 100644 index 0000000..6d7fbaf --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/nbproject/project.xml @@ -0,0 +1,15 @@ + + + org.netbeans.modules.java.j2seproject + + + ProgrammingExam2_CalebFontenot + + + + + + + + + diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Contact.java b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Contact.java new file mode 100644 index 0000000..3249bc1 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Contact.java @@ -0,0 +1,111 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package problem2; + +import java.util.Arrays; + +/** + * + * @author ar114 + */ +public class Contact implements Comparable, Cloneable{ + + private String name; + private char[] address; + private String phone; + + public Contact(String name, char[] address, String phone) { + this.name = name; + // Create a new address object. + this.address = Arrays.copyOf(address, address.length); + this.phone = phone; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public char[] getAddress() { + + return address; + } + + public void setAddress(char[] address) { + // Create a new address object. + this.address = Arrays.copyOf(address, address.length); + } + + @Override + public String toString() { + return "Contract{" + "name=" + name + ", address=" + new String(address) + ", phone=" + phone + '}'; + } + + @Override + public int compareTo(Contact o) { // I know this isn't the correct way of obtaining these values, I'm unsure of the correct solution. + int difference = 0; + difference += this.name.compareTo(o.name); + difference += this.address.toString().compareTo(o.address.toString()); + difference += this.phone.compareTo(o.phone); + return difference; + } + @Override + protected Object clone() { + // Create new objects. + String newName = new String(name); + char[] newAddress = Arrays.copyOf(address, address.length); + String newPhone = new String(phone); + return new Contact(newName, newAddress, newPhone); + } + + public static void main(String[] args) + { + char[] address1 = + { + 'S', 'P', 'A', 'R', 'T', 'A' + }; + Contact leonidas = new Contact("Leonidas King of Sparta", address1, "888-123-4577"); + System.out.println(leonidas); + address1[0] = 'A'; + address1[1] = 'T'; + address1[2] = 'H'; + address1[3] = 'E'; + address1[4] = 'N'; + address1[5] = 'S'; + System.out.println(leonidas); + Object clonedLeonidas = leonidas.clone(); + System.out.println(leonidas); + System.out.println(clonedLeonidas); + + address1[0] = 'A'; + address1[1] = 'R'; + address1[2] = 'G'; + address1[3] = 'O'; + address1[4] = 'S'; + address1[5] = ' '; + + System.out.println(leonidas); + System.out.println(clonedLeonidas); + + Contact pericles = new Contact("Pericles President of Athens", address1, "422-511-1232"); + + System.out.println("Pericles compareTo Pericles = " + pericles.compareTo(pericles)); + System.out.println("Pericles compareTo Leonidas = " + pericles.compareTo(leonidas)); + System.out.println("Cloned Leonidas compareTo Pericles = " + ((Contact) clonedLeonidas).compareTo(pericles)); + + } +} diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Main.java b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Main.java new file mode 100644 index 0000000..d14ce94 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Main.java @@ -0,0 +1,208 @@ +import java.util.Arrays; +import javax.naming.SizeLimitExceededException; + +public class MyContacts implements Scramble +{ + + private Contact[] contacts; + private int size; + public final static int CAPACITY = 2; + + /** + * Adds a new contact. + * + * @param c the contact to be added + * @throws SizeLimitExceededException if we exceed the MyContacts.CAPACITY + */ + public void add(Contact c) throws SizeLimitExceededException + { + if (this.size != CAPACITY) { + contacts[size] = c; + } else { + throw new SizeLimitExceededException("Capacity Exceeded!"); + } + size++; + } + + public MyContacts() + { + contacts = new Contact[CAPACITY]; + } + + @Override + public String toString() + { + String s = ""; + + for (int i = 0; i < this.size; ++i) + { + s += contacts[i].toString() + "\n"; + } + + return s; + } + + /** + * Encrypts by adding the encyptionKey(String) parameter in the front of every + * property of every contact in the array . + * + * @param encyptionKey the object to be added as String to the front of + * every property of the Contact. + * @return the encrypted array as Object type + */ + @Override + public Object encrypt(Object encyptionKey) + { + for (int i = 0; i < size; ++i) + { + + contacts[i].setName(encyptionKey.toString() + contacts[i].getName()); + contacts[i].setAddress((encyptionKey.toString() + new String(contacts[i].getAddress())).toCharArray() + ); + contacts[i].setPhone(encyptionKey.toString() + contacts[i].getPhone()); + } + + return this; + } + + /** + * Decrypts by removing the encyptionKey parameter from the front of every + * property of every contact in the array. + * + * @param decryptionKey the object(String) to be removed from the front of + * every property of the Contact in the array. + * @return the decrypted array as Object type + */ + @Override + public Object decrypt(Object decryptionKey) + { + String name, address, phone; + String decrypt = ((String) decryptionKey); + for (int i = 0; i < size; ++i) { + // get + name = contacts[i].getName(); + address = new String(contacts[i].getAddress()); + phone = contacts[i].getPhone(); + // decrypt + name = (name.split(decrypt))[1]; + address = (address.split(decrypt))[1]; + phone = (phone.split(decrypt))[1]; + // set + contacts[i].setName(name); + contacts[i].setAddress(address.toCharArray()); + contacts[i].setPhone(phone); + } + + return this; + } + + public static void main(String[] args) + { + MyContacts mc = new MyContacts(); + char[] address1 = + { + 'S', 'P', 'A', 'R', 'T', 'A' + }; + char[] address2 = + { + 'A', 'T', 'H', 'E', 'N', 'S' + }; + try + { + mc.add(new Contact("Leonidas", address1, "888-123-4577")); + mc.add(new Contact("Pericles", address2, "422-511-1232")); + mc.add(new Contact("Athena", address2, "422-224-1151")); + } + catch (SizeLimitExceededException e) + { + System.err.println("%%%%%%% " + e); + } + System.out.println("Original Contacts\n" + mc); + + mc.encrypt("abc"); + System.out.println("Encrypted Contacts\n" + mc); + + Object o = mc.decrypt("abc"); + System.out.println("Decrypted Contacts Using the returned o\n" + o); + } +} + +public interface Scramble +{ + /** Encrypts an object by using the parameter. + * + * @param key the key to use as encryption key + * @return the object encrypted + */ + Object encrypt( Object key); + + + /** Decrypts an object by using the decryption key + * + * @param decryptionKey the key to use as decryption key + * @return the object decrypted + */ + Object decrypt( Object key); +} + +public class Contact implements Comparable, Cloneable{ + + private String name; + private char[] address; + private String phone; + + public Contact(String name, char[] address, String phone) { + this.name = name; + // Create a new address object. + this.address = Arrays.copyOf(address, address.length); + this.phone = phone; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public char[] getAddress() { + + return address; + } + + public void setAddress(char[] address) { + // Create a new address object. + this.address = Arrays.copyOf(address, address.length); + } + + @Override + public String toString() { + return "Contract{" + "name=" + name + ", address=" + new String(address) + ", phone=" + phone + '}'; + } + + @Override + public int compareTo(Contact o) { // I know this isn't the correct way of obtaining these values, I'm unsure of the correct solution. + int difference = 0; + difference += this.name.compareTo(o.name); + difference += this.address.toString().compareTo(o.address.toString()); + difference += this.phone.compareTo(o.phone); + return difference; + } + @Override + protected Object clone() { + // Create new objects. + String newName = new String(name); + char[] newAddress = Arrays.copyOf(address, address.length); + String newPhone = new String(phone); + return new Contact(newName, newAddress, newPhone); + } +} diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/MyContacts.java b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/MyContacts.java new file mode 100644 index 0000000..c5ba536 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/MyContacts.java @@ -0,0 +1,139 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package problem2; + +import java.util.Arrays; +import javax.naming.SizeLimitExceededException; + +/** + * + * @author ar114 + */ +public class MyContacts implements Scramble +{ + + private Contact[] contacts; + private int size; + public final static int CAPACITY = 2; + + /** + * Adds a new contact. + * + * @param c the contact to be added + * @throws SizeLimitExceededException if we exceed the MyContacts.CAPACITY + */ + public void add(Contact c) throws SizeLimitExceededException + { + if (this.size != CAPACITY) { + contacts[size] = c; + } else { + throw new SizeLimitExceededException("Capacity Exceeded!"); + } + size++; + } + + public MyContacts() + { + contacts = new Contact[CAPACITY]; + } + + @Override + public String toString() + { + String s = ""; + + for (int i = 0; i < this.size; ++i) + { + s += contacts[i].toString() + "\n"; + } + + return s; + } + + /** + * Encrypts by adding the encyptionKey(String) parameter in the front of every + * property of every contact in the array . + * + * @param encyptionKey the object to be added as String to the front of + * every property of the Contact. + * @return the encrypted array as Object type + */ + @Override + public Object encrypt(Object encyptionKey) + { + for (int i = 0; i < size; ++i) + { + + contacts[i].setName(encyptionKey.toString() + contacts[i].getName()); + contacts[i].setAddress((encyptionKey.toString() + new String(contacts[i].getAddress())).toCharArray() + ); + contacts[i].setPhone(encyptionKey.toString() + contacts[i].getPhone()); + } + + return this; + } + + /** + * Decrypts by removing the encyptionKey parameter from the front of every + * property of every contact in the array. + * + * @param decryptionKey the object(String) to be removed from the front of + * every property of the Contact in the array. + * @return the decrypted array as Object type + */ + @Override + public Object decrypt(Object decryptionKey) + { + String name, address, phone; + String decrypt = ((String) decryptionKey); + for (int i = 0; i < size; ++i) { + // get + name = contacts[i].getName(); + address = new String(contacts[i].getAddress()); + phone = contacts[i].getPhone(); + // decrypt + name = (name.split(decrypt))[1]; + address = (address.split(decrypt))[1]; + phone = (phone.split(decrypt))[1]; + // set + contacts[i].setName(name); + contacts[i].setAddress(address.toCharArray()); + contacts[i].setPhone(phone); + } + + return this; + } + + public static void main(String[] args) + { + MyContacts mc = new MyContacts(); + char[] address1 = + { + 'S', 'P', 'A', 'R', 'T', 'A' + }; + char[] address2 = + { + 'A', 'T', 'H', 'E', 'N', 'S' + }; + try + { + mc.add(new Contact("Leonidas", address1, "888-123-4577")); + mc.add(new Contact("Pericles", address2, "422-511-1232")); + mc.add(new Contact("Athena", address2, "422-224-1151")); + } + catch (SizeLimitExceededException e) + { + System.err.println("%%%%%%% " + e); + } + System.out.println("Original Contacts\n" + mc); + + mc.encrypt("abc"); + System.out.println("Encrypted Contacts\n" + mc); + + Object o = mc.decrypt("abc"); + System.out.println("Decrypted Contacts Using the returned o\n" + o); + } +} diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Scramble.java b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Scramble.java new file mode 100644 index 0000000..1293e81 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/problem2/Scramble.java @@ -0,0 +1,29 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package problem2; + +/** + * + * @author ar114 + */ +public interface Scramble +{ + /** Encrypts an object by using the parameter. + * + * @param key the key to use as encryption key + * @return the object encrypted + */ + Object encrypt( Object key); + + + /** Decrypts an object by using the decryption key + * + * @param decryptionKey the key to use as decryption key + * @return the object decrypted + */ + Object decrypt( Object key); +} + diff --git a/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/programmingexam2_calebfontenot/ProgrammingExam2_CalebFontenot.java b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/programmingexam2_calebfontenot/ProgrammingExam2_CalebFontenot.java new file mode 100644 index 0000000..0b273f1 --- /dev/null +++ b/Semester 2/Exams/ProgrammingExam2_CalebFontenot/src/programmingexam2_calebfontenot/ProgrammingExam2_CalebFontenot.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package programmingexam2_calebfontenot; + +/** + * + * @author ar114 + */ +public class ProgrammingExam2_CalebFontenot { + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + Object[] objArr = new Object[100]; + System.out.println(objArr[0]); + } + +}