Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces
+
+
Search
+
You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camelCase" abbreviations. For example:
+
+
j.l.obj will match "java.lang.Object"
+
InpStr will match "java.io.InputStream"
+
HM.cK will match "java.util.HashMap.containsKey(Object)"
+The following sections describe the different kinds of pages in this collection.
+
+
Overview
+
The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+
+
+
Package
+
Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:
+
+
Interfaces
+
Classes
+
Enum Classes
+
Exceptions
+
Errors
+
Annotation Interfaces
+
+
+
+
Class or Interface
+
Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.
+
+
Class Inheritance Diagram
+
Direct Subclasses
+
All Known Subinterfaces
+
All Known Implementing Classes
+
Class or Interface Declaration
+
Class or Interface Description
+
+
+
+
Nested Class Summary
+
Enum Constant Summary
+
Field Summary
+
Property Summary
+
Constructor Summary
+
Method Summary
+
Required Element Summary
+
Optional Element Summary
+
+
+
+
Enum Constant Details
+
Field Details
+
Property Details
+
Constructor Details
+
Method Details
+
Element Details
+
+
Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.
+
The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+
+
+
Other Files
+
Packages and modules may contain pages with additional information related to the declarations nearby.
+
+
+
Use
+
Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.
+
+
+
Tree (Class Hierarchy)
+
There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.
+
+
When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
+
When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
+
+
+
+
Serialized Form
+
Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.
+
+
+
All Packages
+
The All Packages page contains an alphabetic index of all packages contained in the documentation.
+
+
+
All Classes and Interfaces
+
The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.
+
+
+
Index
+
The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.
+
+
+
+This help file applies to API documentation generated by the standard doclet.
+
+
+
diff --git a/Roboterfabrik/doc/jquery-ui.overrides.css b/Roboterfabrik/doc/jquery-ui.overrides.css
new file mode 100644
index 0000000..f89acb6
--- /dev/null
+++ b/Roboterfabrik/doc/jquery-ui.overrides.css
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active,
+a.ui-button:active,
+.ui-button:active,
+.ui-button.ui-state-active:hover {
+ /* Overrides the color of selection used in jQuery UI */
+ background: #F8981D;
+}
diff --git a/Roboterfabrik/doc/legal/ADDITIONAL_LICENSE_INFO b/Roboterfabrik/doc/legal/ADDITIONAL_LICENSE_INFO
new file mode 100644
index 0000000..b62cc3e
--- /dev/null
+++ b/Roboterfabrik/doc/legal/ADDITIONAL_LICENSE_INFO
@@ -0,0 +1 @@
+Please see ..\java.base\ADDITIONAL_LICENSE_INFO
diff --git a/Roboterfabrik/doc/legal/ASSEMBLY_EXCEPTION b/Roboterfabrik/doc/legal/ASSEMBLY_EXCEPTION
new file mode 100644
index 0000000..0d4cfb4
--- /dev/null
+++ b/Roboterfabrik/doc/legal/ASSEMBLY_EXCEPTION
@@ -0,0 +1 @@
+Please see ..\java.base\ASSEMBLY_EXCEPTION
diff --git a/Roboterfabrik/doc/legal/LICENSE b/Roboterfabrik/doc/legal/LICENSE
new file mode 100644
index 0000000..4ad9fe4
--- /dev/null
+++ b/Roboterfabrik/doc/legal/LICENSE
@@ -0,0 +1 @@
+Please see ..\java.base\LICENSE
diff --git a/Roboterfabrik/doc/legal/jquery.md b/Roboterfabrik/doc/legal/jquery.md
new file mode 100644
index 0000000..8054a34
--- /dev/null
+++ b/Roboterfabrik/doc/legal/jquery.md
@@ -0,0 +1,72 @@
+## jQuery v3.5.1
+
+### jQuery License
+```
+jQuery v 3.5.1
+Copyright JS Foundation and other contributors, https://js.foundation/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+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.
+
+******************************************
+
+The jQuery JavaScript Library v3.5.1 also includes Sizzle.js
+
+Sizzle.js includes the following license:
+
+Copyright JS Foundation and other contributors, https://js.foundation/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/sizzle
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+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.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+*********************
+
+```
diff --git a/Roboterfabrik/doc/legal/jqueryUI.md b/Roboterfabrik/doc/legal/jqueryUI.md
new file mode 100644
index 0000000..8031bdb
--- /dev/null
+++ b/Roboterfabrik/doc/legal/jqueryUI.md
@@ -0,0 +1,49 @@
+## jQuery UI v1.12.1
+
+### jQuery UI License
+```
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+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.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+```
diff --git a/Roboterfabrik/doc/main/Main.html b/Roboterfabrik/doc/main/Main.html
new file mode 100644
index 0000000..c798e05
--- /dev/null
+++ b/Roboterfabrik/doc/main/Main.html
@@ -0,0 +1,164 @@
+
+
+
+
+Main
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete});
\ No newline at end of file
diff --git a/Roboterfabrik/doc/script-dir/jquery-ui.structure.min.css b/Roboterfabrik/doc/script-dir/jquery-ui.structure.min.css
new file mode 100644
index 0000000..e880892
--- /dev/null
+++ b/Roboterfabrik/doc/script-dir/jquery-ui.structure.min.css
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.12.1 - 2018-12-06
+* http://jqueryui.com
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}
\ No newline at end of file
diff --git a/Roboterfabrik/doc/script.js b/Roboterfabrik/doc/script.js
new file mode 100644
index 0000000..864989c
--- /dev/null
+++ b/Roboterfabrik/doc/script.js
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+var moduleSearchIndex;
+var packageSearchIndex;
+var typeSearchIndex;
+var memberSearchIndex;
+var tagSearchIndex;
+function loadScripts(doc, tag) {
+ createElem(doc, tag, 'search.js');
+
+ createElem(doc, tag, 'module-search-index.js');
+ createElem(doc, tag, 'package-search-index.js');
+ createElem(doc, tag, 'type-search-index.js');
+ createElem(doc, tag, 'member-search-index.js');
+ createElem(doc, tag, 'tag-search-index.js');
+}
+
+function createElem(doc, tag, path) {
+ var script = doc.createElement(tag);
+ var scriptElement = doc.getElementsByTagName(tag)[0];
+ script.src = pathtoroot + path;
+ scriptElement.parentNode.insertBefore(script, scriptElement);
+}
+
+function show(tableId, selected, columns) {
+ if (tableId !== selected) {
+ document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
+ .forEach(function(elem) {
+ elem.style.display = 'none';
+ });
+ }
+ document.querySelectorAll('div.' + selected)
+ .forEach(function(elem, index) {
+ elem.style.display = '';
+ var isEvenRow = index % (columns * 2) < columns;
+ elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor);
+ elem.classList.add(isEvenRow ? evenRowColor : oddRowColor);
+ });
+ updateTabs(tableId, selected);
+}
+
+function updateTabs(tableId, selected) {
+ document.querySelector('div#' + tableId +' .summary-table')
+ .setAttribute('aria-labelledby', selected);
+ document.querySelectorAll('button[id^="' + tableId + '"]')
+ .forEach(function(tab, index) {
+ if (selected === tab.id || (tableId === selected && index === 0)) {
+ tab.className = activeTableTab;
+ tab.setAttribute('aria-selected', true);
+ tab.setAttribute('tabindex',0);
+ } else {
+ tab.className = tableTab;
+ tab.setAttribute('aria-selected', false);
+ tab.setAttribute('tabindex',-1);
+ }
+ });
+}
+
+function switchTab(e) {
+ var selected = document.querySelector('[aria-selected=true]');
+ if (selected) {
+ if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
+ // left or up arrow key pressed: move focus to previous tab
+ selected.previousSibling.click();
+ selected.previousSibling.focus();
+ e.preventDefault();
+ } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
+ // right or down arrow key pressed: move focus to next tab
+ selected.nextSibling.click();
+ selected.nextSibling.focus();
+ e.preventDefault();
+ }
+ }
+}
+
+var updateSearchResults = function() {};
+
+function indexFilesLoaded() {
+ return moduleSearchIndex
+ && packageSearchIndex
+ && typeSearchIndex
+ && memberSearchIndex
+ && tagSearchIndex;
+}
+
+// Workaround for scroll position not being included in browser history (8249133)
+document.addEventListener("DOMContentLoaded", function(e) {
+ var contentDiv = document.querySelector("div.flex-content");
+ window.addEventListener("popstate", function(e) {
+ if (e.state !== null) {
+ contentDiv.scrollTop = e.state;
+ }
+ });
+ window.addEventListener("hashchange", function(e) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ });
+ contentDiv.addEventListener("scroll", function(e) {
+ var timeoutID;
+ if (!timeoutID) {
+ timeoutID = setTimeout(function() {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ timeoutID = null;
+ }, 100);
+ }
+ });
+ if (!location.hash) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }
+});
diff --git a/Roboterfabrik/doc/search.js b/Roboterfabrik/doc/search.js
new file mode 100644
index 0000000..db3b2f4
--- /dev/null
+++ b/Roboterfabrik/doc/search.js
@@ -0,0 +1,354 @@
+/*
+ * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+var noResult = {l: "No results found"};
+var loading = {l: "Loading search index..."};
+var catModules = "Modules";
+var catPackages = "Packages";
+var catTypes = "Classes and Interfaces";
+var catMembers = "Members";
+var catSearchTags = "Search Tags";
+var highlight = "$&";
+var searchPattern = "";
+var fallbackPattern = "";
+var RANKING_THRESHOLD = 2;
+var NO_MATCH = 0xffff;
+var MIN_RESULTS = 3;
+var MAX_RESULTS = 500;
+var UNNAMED = "";
+function escapeHtml(str) {
+ return str.replace(//g, ">");
+}
+function getHighlightedText(item, matcher, fallbackMatcher) {
+ var escapedItem = escapeHtml(item);
+ var highlighted = escapedItem.replace(matcher, highlight);
+ if (highlighted === escapedItem) {
+ highlighted = escapedItem.replace(fallbackMatcher, highlight)
+ }
+ return highlighted;
+}
+function getURLPrefix(ui) {
+ var urlPrefix="";
+ var slash = "/";
+ if (ui.item.category === catModules) {
+ return ui.item.l + slash;
+ } else if (ui.item.category === catPackages && ui.item.m) {
+ return ui.item.m + slash;
+ } else if (ui.item.category === catTypes || ui.item.category === catMembers) {
+ if (ui.item.m) {
+ urlPrefix = ui.item.m + slash;
+ } else {
+ $.each(packageSearchIndex, function(index, item) {
+ if (item.m && ui.item.p === item.l) {
+ urlPrefix = item.m + slash;
+ }
+ });
+ }
+ }
+ return urlPrefix;
+}
+function createSearchPattern(term) {
+ var pattern = "";
+ var isWordToken = false;
+ term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) {
+ if (index > 0) {
+ // whitespace between identifiers is significant
+ pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*";
+ }
+ var tokens = w.split(/(?=[A-Z,.()<>[\/])/);
+ for (var i = 0; i < tokens.length; i++) {
+ var s = tokens[i];
+ if (s === "") {
+ continue;
+ }
+ pattern += $.ui.autocomplete.escapeRegex(s);
+ isWordToken = /\w$/.test(s);
+ if (isWordToken) {
+ pattern += "([a-z0-9_$<>\\[\\]]*?)";
+ }
+ }
+ });
+ return pattern;
+}
+function createMatcher(pattern, flags) {
+ var isCamelCase = /[A-Z]/.test(pattern);
+ return new RegExp(pattern, flags + (isCamelCase ? "" : "i"));
+}
+var watermark = 'Search';
+$(function() {
+ var search = $("#search-input");
+ var reset = $("#reset-button");
+ search.val('');
+ search.prop("disabled", false);
+ reset.prop("disabled", false);
+ search.val(watermark).addClass('watermark');
+ search.blur(function() {
+ if ($(this).val().length === 0) {
+ $(this).val(watermark).addClass('watermark');
+ }
+ });
+ search.on('click keydown paste', function() {
+ if ($(this).val() === watermark) {
+ $(this).val('').removeClass('watermark');
+ }
+ });
+ reset.click(function() {
+ search.val('').focus();
+ });
+ search.focus()[0].setSelectionRange(0, 0);
+});
+$.widget("custom.catcomplete", $.ui.autocomplete, {
+ _create: function() {
+ this._super();
+ this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
+ },
+ _renderMenu: function(ul, items) {
+ var rMenu = this;
+ var currentCategory = "";
+ rMenu.menu.bindings = $();
+ $.each(items, function(index, item) {
+ var li;
+ if (item.category && item.category !== currentCategory) {
+ ul.append("
Das Interface repräsentiert einen einfachen Roboter mit seinen Funktionen.
+
+ Jeder produzierte Roboter hat einen Namen, der vom Besteller frei gewählt
+ werden kann. Der Name bleibt über die gesamte Lebensdauer des Roboters
+ unveränderlich. Man kann einen Roboter jederzeit über die
+ getName()-Methode nach seinem Namen fragen.
+
+ Zusätzlich zum frei gewählten Namen, hat jeder Roboter noch eine
+ Seriennummer. Diese wird bei der Produktion festgelegt und hat einen vom
+ Roboter-Typ abhängigen Bereich möglicher Werte. Innerhalb des Bereiches wird
+ die Seriennummer zufällig vergeben. Die Seriennummer kann auch bei
+ ausgeschalteten Roboter über getId()gelesen werden.
+
+ Ein Roboter hat einen Hauptschalter, der mithilfe der
+ triggerPowerSwitch()-Methode bedient werden kann. Direkt nach
+ der Produktion ist der Roboter ausgeschaltet. Drückt man einmal auf den
+ Schalter, wird er eingeschaltet. Ein weiterer Druck schaltet ihn wieder aus, usw.
+
+ Die aktuelle Position des Hauptschalters kann man mit der Methode
+ isPowerOn() abfragen. Hierbei bedeutet true, dass
+ der Roboter eingeschaltet ist und false, dass er nicht
+ eingeschaltet ist.
+
+ Falls ein Fehler auftritt, kann der Nutzer des Roboters den letzten
+ aufgetretenen Fehler über eine Blackbox (Fehlerspeicher) auslesen. Dies
+ geschieht mithilfe der getLastException()-Methode. Der
+ Fehlerspeicher kann auch bei ausgeschaltetem Roboter benutzt werden. Gab es
+ noch keinen Fehler, ist der Fehlerspeicher leer (null).
+
+ Alle Methoden dieses Interfaces können auch auf einem Roboter aufgerufen
+ werden, der ausgeschaltet ist (d.h. wenn isPowerOn() == false).
Das Interface repräsentiert den Befehlssatz eines einfachen Roboters.
+
+ Jeder Roboter kann zwei grundlegende Operationen durchführen: das Umwandeln
+ einer Menge von Zahlen in einen String (speak(...)) und das
+ sortieren eines Arrays von Zahlen (think(...)). Wie genau das
+ Sortieren oder die Umwandlung erfolgt, hängt vom jeweiligen Typ des Roboters ab.
+
+ Zu beachten ist, dass die Methoden dieses Interfaces nur auf Robotern benutzt
+ werden können, die eingeschaltet sind. Versucht man sie auf einem
+ ausgeschalteten Roboter zu benutzen, werfen sie eine RobotIllegalStateException.
+
+ Weiterhin haben alle Roboter einen kleinen technischen Defekt, der dazu führt
+ dass die Methoden dieses Interfaces abstürzen, wenn in den Eingabedaten ein
+ spezieller Wert vorkommt. Immer wenn (speak(...)) oder (
+ think(...)) mit einem Array aufgerufen werden, das irgendwo die
+ Zahl 42 enthält, verweigern sie ihren Dienst und werfen eine
+ RobotMagicValueException.
+
+
diff --git a/Roboterfabrik/src/Domäne/RobotFactory.java b/Roboterfabrik/src/Domäne/RobotFactory.java
index e88546b..0fdc89a 100644
--- a/Roboterfabrik/src/Domäne/RobotFactory.java
+++ b/Roboterfabrik/src/Domäne/RobotFactory.java
@@ -4,16 +4,36 @@ import java.util.HashMap;
import tpe.exceptions.roboter.exceptions.RobotException;
+/**
+ * Factory-Klasse für R2D2 und C3PO
+ *
+ * @author Kai-Niklas Dippold
+ *
+ */
public class RobotFactory {
private String name;
private Roboter pris = Nexus6.getInstance();
private HashMap roboterLager = new HashMap<>();
+ /**
+ * Benennt die RobotFactory und setzt Nexus-Roboter "Pris" ins Roboterlager
+ *
+ * @param name Name der RobotFactory
+ */
public RobotFactory(String name) {
this.name = name;
roboterLager.put(pris.getId(), pris);
}
+ /**
+ * Erstellt neue Roboter nach Anforderungen, speichert diese im Roboterlager und
+ * gibt die Id des erstellten Roboters zurück
+ *
+ * @param robotType entweder R2D2 oder C3PO
+ * @param name Name des Roboters
+ *
+ * @return Gibt die ID des erstellten Roboters zurück.
+ */
public int addRobot(RobotType robotType, String name) {
Roboter roboter;
@@ -30,14 +50,32 @@ public class RobotFactory {
return -1;
}
+ /**
+ * Gibt den Namen der RobotFactory zurück.
+ *
+ * @return Name der RobotFactory
+ */
public String getName() {
return name;
}
+ /**
+ * Duchsucht das Roboterlager nach einem bestimmten Roboter
+ *
+ * @param id Id des Roboters
+ * @return Instanz des Roboters mit der gefragten Id
+ */
public Roboter findeRoboter(int id) {
return roboterLager.get(id);
}
+ /**
+ * Generiert eine Zahl innerhalb der gegebenen Parameter
+ *
+ * @param min Mindestgröße der Zahl
+ * @param max Maximalgröße der Zahl
+ * @return Zufallszahl innerhalb der Parameter
+ */
private int idVergeben(int min, int max) {
int randomValue = (int) (Math.random() * (max - min)) + min;
@@ -48,12 +86,25 @@ public class RobotFactory {
return randomValue;
}
+ /**
+ * Prüft ob ein Roboter ein- oder ausgeschaltet ist
+ *
+ * @param id Id des Roboters
+ * @return Zustand des Roboters
+ */
public boolean roboterZustand(int id) {
Roboter r = findeRoboter(id);
boolean zustand = r.isPowerOn();
return zustand;
}
+ /**
+ * Schaltet einen Roboter ein wenn er ausgeschaltet ist und schaltet ihn aus
+ * wenn er eingeschaltet ist
+ *
+ * @param id Id des Roboters
+ * @return Zustand des Roboters
+ */
public boolean schalterAnAus(int id) {
Roboter r = findeRoboter(id);
r.triggerPowerSwitch();
@@ -61,6 +112,15 @@ public class RobotFactory {
return zustand;
}
+ /**
+ * Ruft die Methoden think() und speak() eines Roboters auf und gibt dessen
+ * Ausgabe wieder.
+ *
+ * @param id Id des Roboters
+ * @param zahlen Int-Array
+ * @return String mit dem Inhalt des gegebenen Arrays, nachdem es von dem
+ * Roboter sortiert wurde.
+ */
public String aufrufSpeakAndThink(int id, int[] zahlen) throws RobotException {
Roboter r = findeRoboter(id);
int[] sotiert = r.think(zahlen);
@@ -69,11 +129,23 @@ public class RobotFactory {
}
+ /**
+ * Gibt den letzten Fehler zurück, auf den der Roboter gestoßen ist
+ *
+ * @param id Id des Roboters
+ * @return Die RobotException welche im Roboter gespeichert ist
+ */
public RobotException letzterFehler(int id) {
Roboter r = findeRoboter(id);
return r.getLastException();
}
+ /**
+ * Gibt die Daten eines Roboters wieder
+ *
+ * @param id Id des Roboters
+ * @return String mit Typ, Namen und Id des Roboters
+ */
public String datenDesRoboters(int id) {
Roboter r = findeRoboter(id);
String robotType = r.getRobotType().toString();
@@ -84,10 +156,21 @@ public class RobotFactory {
}
+ /**
+ * Gibt die Größe des Roboterlagers an.
+ *
+ * @return Größe des Roboterlagers
+ */
public int getRoboterLagerSize() {
return roboterLager.size();
}
+ /**
+ * Überprüft ob das Lager einen bestimmten Roboter enthält.
+ *
+ * @param id Id des Roboters
+ * @return true oder false je nachdem ob der Roboter im Lager vorhanden ist
+ */
public boolean istDieserRoboterDa(int id) {
return roboterLager.containsKey(id);
}
diff --git a/Roboterfabrik/src/facade/Factorysystem.java b/Roboterfabrik/src/facade/Factorysystem.java
index 25ae7bf..9a3757b 100644
--- a/Roboterfabrik/src/facade/Factorysystem.java
+++ b/Roboterfabrik/src/facade/Factorysystem.java
@@ -4,13 +4,33 @@ import Domäne.RobotFactory;
import Domäne.RobotType;
import tpe.exceptions.roboter.exceptions.RobotException;
+/**
+ * Factorysystem agiert als Fassade für RobotFactory
+ *
+ * @author Kai-Niklas Dippold
+ *
+ *
+ *
+ */
public class Factorysystem {
private RobotFactory robotFactory;
+ /**
+ * Erstellt eine neue RobotFactory mit dem gegebenen Namen
+ *
+ * @param name Name der RobotFactory
+ */
public Factorysystem(String name) {
this.robotFactory = new RobotFactory(name);
}
+ /**
+ * Legt einen neuen Roboter je nach Auswahl mit dem gegebenen Namen an
+ *
+ * @param name Name des Roboters
+ * @param auswahl Bei 1 wird ein R2D2 erstellt, bei 2 ein C3PO.
+ * @return Gibt die ID des erstellten Roboters zurück
+ */
public int roboterAnlegen(String name, int auswahl) {
RobotType robottype;
if (auswahl == 1) {
@@ -26,6 +46,13 @@ public class Factorysystem {
}
+ /**
+ * Ruft die Methode roboterZustand(id) in der RobotFactory auf
+ *
+ * @see Domäne.RobotFactory#roboterZustand(int)
+ * @param id Id des Roboters
+ * @return Gibt die Wiedergabe von roboterZustand(id) zurück
+ */
public boolean zustandRoboter(int id) {
return robotFactory.roboterZustand(id);
}