| @ -0,0 +1,55 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <classpath> | |||
| <classpathentry kind="src" output="target/classes" path="src/main/java"> | |||
| <attributes> | |||
| <attribute name="optional" value="true"/> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="src" output="target/test-classes" path="src/test/java"> | |||
| <attributes> | |||
| <attribute name="optional" value="true"/> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| <attribute name="test" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| <attribute name="test" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="src" path="target/generated-sources/annotations"> | |||
| <attributes> | |||
| <attribute name="optional" value="true"/> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| <attribute name="ignore_optional_problems" value="true"/> | |||
| <attribute name="m2e-apt" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations"> | |||
| <attributes> | |||
| <attribute name="optional" value="true"/> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| <attribute name="ignore_optional_problems" value="true"/> | |||
| <attribute name="m2e-apt" value="true"/> | |||
| <attribute name="test" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="output" path="target/classes"/> | |||
| </classpath> | |||
| @ -0,0 +1,8 @@ | |||
| # Default ignored files | |||
| /shelf/ | |||
| /workspace.xml | |||
| # Editor-based HTTP Client requests | |||
| /httpRequests/ | |||
| # Datasource local storage ignored files | |||
| /dataSources/ | |||
| /dataSources.local.xml | |||
| @ -0,0 +1,16 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="CompilerConfiguration"> | |||
| <annotationProcessing> | |||
| <profile name="Maven default annotation processors profile" enabled="true"> | |||
| <sourceOutputDir name="target/generated-sources/annotations" /> | |||
| <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> | |||
| <outputRelativeToContentRoot value="true" /> | |||
| <module name="primerEjemplo" /> | |||
| </profile> | |||
| </annotationProcessing> | |||
| <bytecodeTargetLevel target="10"> | |||
| <module name="primerEjemplo" target="16" /> | |||
| </bytecodeTargetLevel> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,20 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="RemoteRepositoriesConfiguration"> | |||
| <remote-repository> | |||
| <option name="id" value="central" /> | |||
| <option name="name" value="Central Repository" /> | |||
| <option name="url" value="https://repo.maven.apache.org/maven2" /> | |||
| </remote-repository> | |||
| <remote-repository> | |||
| <option name="id" value="central" /> | |||
| <option name="name" value="Maven Central repository" /> | |||
| <option name="url" value="https://repo1.maven.org/maven2" /> | |||
| </remote-repository> | |||
| <remote-repository> | |||
| <option name="id" value="jboss.community" /> | |||
| <option name="name" value="JBoss Community repository" /> | |||
| <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> | |||
| </remote-repository> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: com.github.javafaker:javafaker:1.0.2"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/com/github/javafaker/javafaker/1.0.2/javafaker-1.0.2.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/com/github/javafaker/javafaker/1.0.2/javafaker-1.0.2-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/com/github/javafaker/javafaker/1.0.2/javafaker-1.0.2-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: com.github.mifmif:generex:1.0.2"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/com/github/mifmif/generex/1.0.2/generex-1.0.2.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/com/github/mifmif/generex/1.0.2/generex-1.0.2-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/com/github/mifmif/generex/1.0.2/generex-1.0.2-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: dk.brics.automaton:automaton:1.11-8"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/dk/brics/automaton/automaton/1.11-8/automaton-1.11-8.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/dk/brics/automaton/automaton/1.11-8/automaton-1.11-8-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/dk/brics/automaton/automaton/1.11-8/automaton-1.11-8-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.apache.commons:commons-lang3:3.5"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.json:json:20140107"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20140107/json-20140107.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20140107/json-20140107-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20140107/json-20140107-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.springframework:spring-aop:5.3.23"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.23/spring-aop-5.3.23.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.23/spring-aop-5.3.23-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.23/spring-aop-5.3.23-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.springframework:spring-beans:5.3.23"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.3.23/spring-beans-5.3.23.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.3.23/spring-beans-5.3.23-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.3.23/spring-beans-5.3.23-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.springframework:spring-context:5.3.23"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.3.23/spring-context-5.3.23.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.3.23/spring-context-5.3.23-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.3.23/spring-context-5.3.23-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.springframework:spring-core:5.3.23"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.23/spring-core-5.3.23.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.23/spring-core-5.3.23-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.23/spring-core-5.3.23-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.springframework:spring-expression:5.3.23"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.3.23/spring-expression-5.3.23.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.3.23/spring-expression-5.3.23-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.3.23/spring-expression-5.3.23-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.springframework:spring-jcl:5.3.23"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.3.23/spring-jcl-5.3.23.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.3.23/spring-jcl-5.3.23-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.3.23/spring-jcl-5.3.23-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <component name="libraryTable"> | |||
| <library name="Maven: org.yaml:snakeyaml:android:1.23"> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.23/snakeyaml-1.23-android.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.23/snakeyaml-1.23-javadoc.jar!/" /> | |||
| </JAVADOC> | |||
| <SOURCES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.23/snakeyaml-1.23-sources.jar!/" /> | |||
| </SOURCES> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,11 @@ | |||
| <component name="libraryTable"> | |||
| <library name="github.java.json.tools.btf" type="repository"> | |||
| <properties maven-id="com.github.java-json-tools:btf:1.3" /> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/com/github/java-json-tools/btf/1.3/btf-1.3.jar!/" /> | |||
| <root url="jar://$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC /> | |||
| <SOURCES /> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,15 @@ | |||
| <component name="libraryTable"> | |||
| <library name="springframework.spring.context" type="repository"> | |||
| <properties maven-id="org.springframework:spring-context:5.0.1.RELEASE" /> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.1.RELEASE/spring-context-5.0.1.RELEASE.jar!/" /> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.1.RELEASE/spring-aop-5.0.1.RELEASE.jar!/" /> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.1.RELEASE/spring-beans-5.0.1.RELEASE.jar!/" /> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.1.RELEASE/spring-core-5.0.1.RELEASE.jar!/" /> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.1.RELEASE/spring-jcl-5.0.1.RELEASE.jar!/" /> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.1.RELEASE/spring-expression-5.0.1.RELEASE.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC /> | |||
| <SOURCES /> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,10 @@ | |||
| <component name="libraryTable"> | |||
| <library name="springframework.spring.context.indexer" type="repository"> | |||
| <properties maven-id="org.springframework:spring-context-indexer:5.1.8.RELEASE" /> | |||
| <CLASSES> | |||
| <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-indexer/5.1.8.RELEASE/spring-context-indexer-5.1.8.RELEASE.jar!/" /> | |||
| </CLASSES> | |||
| <JAVADOC /> | |||
| <SOURCES /> | |||
| </library> | |||
| </component> | |||
| @ -0,0 +1,13 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="MavenProjectsManager"> | |||
| <option name="originalFiles"> | |||
| <list> | |||
| <option value="$PROJECT_DIR$/pom.xml" /> | |||
| </list> | |||
| </option> | |||
| </component> | |||
| <component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="corretto-18" project-jdk-type="JavaSDK"> | |||
| <output url="file://$PROJECT_DIR$" /> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,8 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="ProjectModuleManager"> | |||
| <modules> | |||
| <module fileurl="file://$PROJECT_DIR$/primerEjemplo.iml" filepath="$PROJECT_DIR$/primerEjemplo.iml" /> | |||
| </modules> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,124 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="Palette2"> | |||
| <group name="Swing"> | |||
| <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | |||
| <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> | |||
| </item> | |||
| <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | |||
| <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> | |||
| </item> | |||
| <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | |||
| <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> | |||
| </item> | |||
| <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true"> | |||
| <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> | |||
| </item> | |||
| <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> | |||
| <initial-values> | |||
| <property name="text" value="Button" /> | |||
| </initial-values> | |||
| </item> | |||
| <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> | |||
| <initial-values> | |||
| <property name="text" value="RadioButton" /> | |||
| </initial-values> | |||
| </item> | |||
| <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> | |||
| <initial-values> | |||
| <property name="text" value="CheckBox" /> | |||
| </initial-values> | |||
| </item> | |||
| <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | |||
| <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> | |||
| <initial-values> | |||
| <property name="text" value="Label" /> | |||
| </initial-values> | |||
| </item> | |||
| <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | |||
| <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | |||
| <preferred-size width="150" height="-1" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | |||
| <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | |||
| <preferred-size width="150" height="-1" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | |||
| <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | |||
| <preferred-size width="150" height="-1" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | |||
| <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | |||
| <preferred-size width="150" height="50" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | |||
| <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | |||
| <preferred-size width="150" height="50" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | |||
| <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | |||
| <preferred-size width="150" height="50" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | |||
| <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> | |||
| </item> | |||
| <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | |||
| <preferred-size width="150" height="50" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> | |||
| <preferred-size width="150" height="50" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | |||
| <preferred-size width="150" height="50" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> | |||
| <preferred-size width="200" height="200" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | |||
| <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> | |||
| <preferred-size width="200" height="200" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | |||
| <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> | |||
| </item> | |||
| <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> | |||
| </item> | |||
| <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | |||
| <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> | |||
| </item> | |||
| <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> | |||
| </item> | |||
| <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | |||
| <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> | |||
| <preferred-size width="-1" height="20" /> | |||
| </default-constraints> | |||
| </item> | |||
| <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | |||
| <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> | |||
| </item> | |||
| <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | |||
| <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> | |||
| </item> | |||
| </group> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,34 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <projectDescription> | |||
| <name>primerEjemplo</name> | |||
| <comment></comment> | |||
| <projects> | |||
| </projects> | |||
| <buildSpec> | |||
| <buildCommand> | |||
| <name>org.eclipse.jdt.core.javabuilder</name> | |||
| <arguments> | |||
| </arguments> | |||
| </buildCommand> | |||
| <buildCommand> | |||
| <name>org.eclipse.m2e.core.maven2Builder</name> | |||
| <arguments> | |||
| </arguments> | |||
| </buildCommand> | |||
| </buildSpec> | |||
| <natures> | |||
| <nature>org.eclipse.jdt.core.javanature</nature> | |||
| <nature>org.eclipse.m2e.core.maven2Nature</nature> | |||
| </natures> | |||
| <filteredResources> | |||
| <filter> | |||
| <id>1668183688460</id> | |||
| <name></name> | |||
| <type>30</type> | |||
| <matcher> | |||
| <id>org.eclipse.core.resources.regexFilterMatcher</id> | |||
| <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments> | |||
| </matcher> | |||
| </filter> | |||
| </filteredResources> | |||
| </projectDescription> | |||
| @ -0,0 +1,2 @@ | |||
| eclipse.preferences.version=1 | |||
| org.eclipse.jdt.apt.aptEnabled=false | |||
| @ -0,0 +1,8 @@ | |||
| eclipse.preferences.version=1 | |||
| org.eclipse.jdt.core.compiler.annotation.nonnull=org.springframework.lang.NonNull | |||
| org.eclipse.jdt.core.compiler.annotation.nullable=org.springframework.lang.Nullable | |||
| org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled | |||
| org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning | |||
| org.eclipse.jdt.core.compiler.problem.nullReference=warning | |||
| org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning | |||
| org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning | |||
| @ -0,0 +1,4 @@ | |||
| activeProfiles= | |||
| eclipse.preferences.version=1 | |||
| resolveWorkspaceProjects=true | |||
| version=1 | |||
| @ -0,0 +1,53 @@ | |||
| <h1>ANOTACIONES </h1> | |||
| <h3>Autowired </h3> | |||
| <p>Tiene el mismo efecto que la configuracion via XML</p> | |||
| <p>Busca un bean y lo inyecta en la depencia</p> | |||
| <p>Se realiza un autocableado byType </p> | |||
| <h4>*****Donde lo podemos usar******</h4> | |||
| <p>Lo podemos utilizar en un metodo setter</p> | |||
| ```java | |||
| @Autowired | |||
| public void setPeliculas(PeliculasServicio peliculasServicio){....} | |||
| ``` | |||
| <p>Definicion en la propiedad</p> | |||
| ```java | |||
| @Autowired | |||
| private PeliculaServicio peliculaServicio; | |||
| ``` | |||
| <p>En el constructor</p> | |||
| ```java | |||
| @Autowired | |||
| public PeliculaServicio(PeliculaServicio){....} | |||
| ``` | |||
| <p>Ejemplo en el xml </p> | |||
| ```xml | |||
| <bean id="peliculaDaoMemory" | |||
| class="com.primerEjemplo.PeliculaImplements" | |||
| init-method="cargarDatos" /> | |||
| <bean id="peliculaService" class="com.primerEjemplo.Modelo.PeliculaServicio" autowire="byType"/> | |||
| ``` | |||
| <p>Ejemplo del main</p> | |||
| ```java | |||
| // Necesitamos el bean de servicios para printar por pantalla la logica | |||
| PeliculaServicio peliculaService = appContext.getBean(PeliculaServicio.class); | |||
| peliculaService.peliculasPorGenero("Drama").forEach(System.out::println); | |||
| appContext.close(); | |||
| ``` | |||
| @ -0,0 +1,47 @@ | |||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||
| <modelVersion>4.0.0</modelVersion> | |||
| <groupId>com.primerEjemplo</groupId> | |||
| <artifactId>primerEjemplo</artifactId> | |||
| <version>0.0.1-SNAPSHOT</version> | |||
| <build> | |||
| <plugins> | |||
| <plugin> | |||
| <groupId>org.apache.maven.plugins</groupId> | |||
| <artifactId>maven-compiler-plugin</artifactId> | |||
| <configuration> | |||
| <source>16</source> | |||
| <target>16</target> | |||
| </configuration> | |||
| </plugin> | |||
| </plugins> | |||
| </build> | |||
| <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> | |||
| <dependencies> | |||
| <dependency> | |||
| <groupId>org.springframework</groupId> | |||
| <artifactId>spring-context</artifactId> | |||
| <version>5.3.23</version> | |||
| </dependency> | |||
| <!-- https://mvnrepository.com/artifact/org.json/json --> | |||
| <dependency> | |||
| <groupId>org.json</groupId> | |||
| <artifactId>json</artifactId> | |||
| <version>20140107</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.github.javafaker</groupId> | |||
| <artifactId>javafaker</artifactId> | |||
| <version>1.0.2</version> | |||
| </dependency> | |||
| </dependencies> | |||
| <properties> | |||
| <maven.compiler.source>1.8</maven.compiler.source> | |||
| <maven.compiler.target>1.8</maven.compiler.target> | |||
| </properties> | |||
| </project> | |||
| @ -0,0 +1,40 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> | |||
| <component name="FacetManager"> | |||
| <facet type="Spring" name="Spring"> | |||
| <configuration> | |||
| <fileset id="fileset" name="Spring Application Context" removed="false"> | |||
| <file>file://$MODULE_DIR$/src/main/resources/beans.xml</file> | |||
| </fileset> | |||
| </configuration> | |||
| </facet> | |||
| </component> | |||
| <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_16"> | |||
| <output url="file://$MODULE_DIR$/target/classes" /> | |||
| <output-test url="file://$MODULE_DIR$/target/test-classes" /> | |||
| <content url="file://$MODULE_DIR$"> | |||
| <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> | |||
| <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> | |||
| <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> | |||
| <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/target" /> | |||
| </content> | |||
| <orderEntry type="inheritedJdk" /> | |||
| <orderEntry type="sourceFolder" forTests="false" /> | |||
| <orderEntry type="library" name="github.java.json.tools.btf" level="project" /> | |||
| <orderEntry type="library" name="springframework.spring.context" level="project" /> | |||
| <orderEntry type="library" name="springframework.spring.context.indexer" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.23" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.23" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.23" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.23" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.23" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.23" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.json:json:20140107" level="project" /> | |||
| <orderEntry type="library" name="Maven: com.github.javafaker:javafaker:1.0.2" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" /> | |||
| <orderEntry type="library" name="Maven: org.yaml:snakeyaml:android:1.23" level="project" /> | |||
| <orderEntry type="library" name="Maven: com.github.mifmif:generex:1.0.2" level="project" /> | |||
| <orderEntry type="library" name="Maven: dk.brics.automaton:automaton:1.11-8" level="project" /> | |||
| </component> | |||
| </module> | |||
| @ -0,0 +1,114 @@ | |||
| package Lib; | |||
| import java.util.IllegalFormatException; | |||
| public class Ansi { | |||
| public enum Color { | |||
| BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NONE | |||
| } | |||
| public enum ColorType { | |||
| FOREGROUND, BACKGROUND | |||
| } | |||
| public static final String ESC = "\u001b["; | |||
| public static final String RESET = ESC + "0m"; | |||
| public static final String HIGH_INTENSITY = ESC + "[1m"; | |||
| public static final String LOW_INTESITY = ESC + "[2m"; | |||
| public static final String ITALIC = ESC + "[3m"; | |||
| public static final String UNDERLINE = ESC + "[4m"; | |||
| public static final String BLINK = ESC + "[5m"; | |||
| public static final String RAPID_BLINK = ESC + "[6m"; | |||
| public static final String REVERSE_VIDEO = ESC + "[7m"; | |||
| public static final String INVISIBLE_TEXT = ESC + "[8m"; | |||
| private Ansi() { } | |||
| public static Color randomColor() { | |||
| int min = 0; | |||
| int max = Color.values().length - 1; | |||
| int alea =Util.random(min, max); | |||
| return Color.values()[alea]; | |||
| } | |||
| public static void print(char c, Color fg, Color bg) { | |||
| printTo(c, -1, -1, false, fg, bg); | |||
| } | |||
| public static void printTo(char c, int col, int row) { | |||
| printTo(c, col, row, false, Color.NONE, Color.NONE); | |||
| } | |||
| public static void printTo(char c, int col, int row, boolean bold, Color fg, Color bg) { | |||
| String color = getColorStr(bold, fg, bg); | |||
| if(row > 0 || col > 0) | |||
| System.out.print(ESC + row + ";" + col + "f"); | |||
| System.out.print(color + c); | |||
| if(!color.isEmpty()) | |||
| System.out.print(RESET); | |||
| System.out.flush(); | |||
| } | |||
| private static String getColorStr(boolean bold, Color fg, Color bg) { | |||
| String fgColor = getColor(fg, ColorType.FOREGROUND); | |||
| String bgColor = getColor(bg, ColorType.BACKGROUND); | |||
| String negrita = (bold ? "1" : "0"); | |||
| String color = ""; | |||
| if(!fgColor.isEmpty() || !bgColor.isEmpty()) { | |||
| color = ESC + negrita; | |||
| color += (!fgColor.isEmpty() ? ";" + fgColor : ""); | |||
| color += (!bgColor.isEmpty() ? ";" + bgColor : ""); | |||
| color += "m"; | |||
| } | |||
| return color; | |||
| } | |||
| public static String format(String s, boolean bold, Color fg, Color bg, Object...args) throws IllegalFormatException { | |||
| String color = getColorStr(bold, fg, bg); | |||
| return color + String.format(s, args) + RESET; | |||
| } | |||
| public static void printf(String s, boolean bold, Color fg, Color bg, Object...args) throws IllegalFormatException { | |||
| String color = getColorStr(bold, fg, bg); | |||
| // String text = String.format(s, args); | |||
| System.out.printf(color + s, args); | |||
| System.out.print(RESET); | |||
| System.out.flush(); | |||
| } | |||
| public static String getColor(Color c, ColorType ct) { | |||
| String result = ""; | |||
| if(c != Color.NONE) { | |||
| switch(ct) { | |||
| case FOREGROUND: | |||
| result = "3" + c.ordinal(); | |||
| break; | |||
| case BACKGROUND: | |||
| result = "4" + c.ordinal(); | |||
| break; | |||
| } | |||
| } | |||
| return result; | |||
| } | |||
| public static void clearScreen() { | |||
| System.out.print(ESC + "H"); | |||
| System.out.print(ESC + "2J"); | |||
| System.out.flush(); | |||
| } | |||
| public static void hideCursor() { | |||
| System.out.print(ESC + "?25l"); | |||
| System.out.flush(); | |||
| } | |||
| public static void showCursor() { | |||
| System.out.print(ESC + "?25h"); | |||
| System.out.flush(); | |||
| } | |||
| public static void cleanScreen() { | |||
| } | |||
| } | |||
| @ -0,0 +1,36 @@ | |||
| package Lib; | |||
| import java.util.Random;; | |||
| public class Bombo { | |||
| private final int[] array; | |||
| private int validos; | |||
| private final Random random; | |||
| public Bombo(int cantidadElementos, int valorMinimo) { | |||
| random = new Random(); | |||
| array = new int[cantidadElementos]; | |||
| for (int i = 0; i < array.length; i++) { | |||
| array[i] = valorMinimo; | |||
| valorMinimo++; | |||
| } | |||
| validos = cantidadElementos - 1; | |||
| } | |||
| public int extraerBola() { | |||
| if (validos >= 0) { | |||
| int indice = random.nextInt(validos - 0 + 1) + 0; | |||
| int numero = array[indice]; | |||
| array[indice] = array[validos]; | |||
| array[validos] = numero; | |||
| validos--; | |||
| return numero; | |||
| } | |||
| return Integer.MIN_VALUE; | |||
| } | |||
| public void reset() { | |||
| validos = array.length - 1; | |||
| } | |||
| } | |||
| @ -0,0 +1,438 @@ | |||
| package Lib; | |||
| import java.text.SimpleDateFormat; | |||
| import java.time.LocalDate; | |||
| import java.util.Arrays; | |||
| import java.util.Calendar; | |||
| import java.util.Date; | |||
| import java.util.GregorianCalendar; | |||
| import java.util.concurrent.ThreadLocalRandom; | |||
| import java.util.regex.Pattern; | |||
| public class Control { | |||
| private static String userStr; | |||
| private static int usrInt; | |||
| private static boolean correct; | |||
| private static final Pattern REGEXP = Pattern.compile("[0-9]{8}[A-Z]"); | |||
| private static final Pattern REGEXP1 = Pattern.compile("[0-9]{8}"); | |||
| private static final String DIGITO_CONTROL = "TRWAGMYFPDXBNJZSQVHLCKE"; | |||
| private static final String[] INVALIDOS = new String[]{"00000000T", "00000001R", "99999999R"}; | |||
| /** | |||
| * @param tittle for your menu | |||
| * @param sentence/s for your choices | |||
| * @returns the value of your choice | |||
| */ | |||
| public static int menuGenerator(String tittle, String[] sentence) { | |||
| System.out.println("\n*****************"); | |||
| System.out.printf("** %S **\n", tittle); | |||
| System.out.println("*****************\n"); | |||
| for (int i = 0; i < sentence.length; i++) { | |||
| sentence[i] = String.format("%d %S\n", (i), sentence[i]); | |||
| System.out.println(sentence[i]); | |||
| } | |||
| System.out.println("Choose one option"); | |||
| int option = Integer.parseInt(Util.myInput.nextLine()); | |||
| boolean correct = option > 0; | |||
| do { | |||
| if (option > sentence.length) { | |||
| System.out.println("Please your answer must be between the range"); | |||
| option = -1; | |||
| } else { | |||
| Ansi.clearScreen(); | |||
| return option; | |||
| } | |||
| } while (!correct); | |||
| return option; | |||
| } | |||
| /** | |||
| * @param initializer | |||
| * @param tittle | |||
| * @param sentence | |||
| * @return | |||
| */ | |||
| public static int menuGenerator(int initializer, String tittle, String[] sentence) { | |||
| System.out.println("\n*****************"); | |||
| System.out.printf("** %S **\n", tittle); | |||
| System.out.println("*****************\n"); | |||
| for (int i = initializer; i < sentence.length; i++) { | |||
| sentence[i] = String.format("%d %S\n", (i), sentence[i]); | |||
| System.out.println(sentence[i]); | |||
| } | |||
| System.out.println("Choose one option"); | |||
| int option = Integer.parseInt(Util.myInput.nextLine()); | |||
| if (option > sentence.length) { | |||
| System.out.println("Please your answer must be between the range"); | |||
| option = -1; | |||
| } else { | |||
| Ansi.clearScreen(); | |||
| return option; | |||
| } | |||
| return option; | |||
| } | |||
| public static int getEdad(GregorianCalendar edad) { | |||
| int anyoNacimiento = edad.get(Calendar.YEAR); | |||
| int mesNacimiento = edad.get(Calendar.MONTH) + 1; // | |||
| int diaNacimiento = edad.get(Calendar.DAY_OF_MONTH); | |||
| GregorianCalendar fecha = new GregorianCalendar(); | |||
| int anyoActual = fecha.get(Calendar.YEAR); | |||
| int mesActual = fecha.get(Calendar.MONTH) + 1; | |||
| int diaActual = fecha.get(Calendar.DAY_OF_MONTH); | |||
| int edad1 = anyoActual - anyoNacimiento; | |||
| if (mesActual < mesNacimiento) { | |||
| edad1--; | |||
| } else if (mesActual == mesNacimiento) { | |||
| if (diaActual < diaNacimiento) { | |||
| edad1--; | |||
| } | |||
| } | |||
| return edad1; | |||
| } | |||
| /** | |||
| * @param min introduce the minimum date you want | |||
| * @param max introduce the maximum date you want | |||
| * @return | |||
| */ | |||
| public static GregorianCalendar randBirth(int min, int max) { | |||
| GregorianCalendar gc = new GregorianCalendar(); | |||
| // we create a date between these two years | |||
| // int year = Lib.randBetween(1900, 2010); | |||
| if (min < 1900) { | |||
| System.out.println("The date needs to be greater than " + min); | |||
| } | |||
| int year = Util.randBetween(min, max); | |||
| // we set the our own year to one gc YEAR | |||
| gc.set(gc.YEAR, year); | |||
| // get a random day of the year | |||
| int dayOfYear = Util.randBetween(1, gc.getActualMaximum(gc.DAY_OF_YEAR)); | |||
| // then we obtain our last item | |||
| gc.set(gc.DAY_OF_YEAR, dayOfYear); | |||
| // print out an example(*we need to format this in order to print this | |||
| // correctly) | |||
| // System.out.println(gc.get(gc.YEAR) + "-" + (gc.get(gc.MONTH) + 1) + "-" + | |||
| // gc.get(gc.DAY_OF_MONTH)); | |||
| return gc; | |||
| } | |||
| /** | |||
| * | |||
| * @return gregoriancalendar formated () that the user has introduced | |||
| */ | |||
| // public static GregorianCalendar birthFormat() { | |||
| // System.out.println(" Fecha (dd-mm-yyyy)"); | |||
| // userStr = Util.myInput.nextLine(); | |||
| // SimpleDateFormat sdf = new SimpleDateFormat("DD-MM-YYYY"); | |||
| // // GregorianCalendar birth = null; | |||
| // do { | |||
| // try { | |||
| // Date date = sdf.parse(userStr); | |||
| // birth = new GregorianCalendar(); | |||
| // birth.setTime(date); | |||
| // correct = true; | |||
| // } catch (Exception e) { | |||
| // correct = false; | |||
| // System.out.println("The format that you've introduced is not correct"); | |||
| // } | |||
| // } while (!correct); | |||
| // return birth; | |||
| // } | |||
| /** | |||
| * @return gregoriancalendar formated () that the user has introduced | |||
| */ | |||
| public static String birthFormat(GregorianCalendar yourDate) { | |||
| SimpleDateFormat sdf = new SimpleDateFormat("DD-MM-YYYY"); | |||
| String dateFormatted = sdf.format( | |||
| yourDate.getTime()); | |||
| return dateFormatted; | |||
| } | |||
| /** | |||
| * @param <T> | |||
| * @param yourDate | |||
| * @return the formatted date | |||
| */ | |||
| public static <T> String dateFormated(T yourDate) { | |||
| SimpleDateFormat sdf = new SimpleDateFormat("DD-MM-YYYY"); | |||
| String dateFormatted = sdf.format( | |||
| ((Calendar) yourDate).getTime()); | |||
| return dateFormatted; | |||
| } | |||
| /** | |||
| * @param message introduce the message you want to ask to the user | |||
| * @param validate validate each one of your validated options | |||
| * @return true if it matches any asnwers and false if it does not. | |||
| */ | |||
| public static boolean one(String message, char[] validate) { | |||
| int index = 0; | |||
| System.out.printf(message); | |||
| char c = Util.myInput.nextLine().toLowerCase().charAt(index); | |||
| for (int i = 0; i < validate.length; i++) { | |||
| if (validate[i] == c) { | |||
| correct = true; | |||
| } else { | |||
| correct = false; | |||
| } | |||
| } | |||
| return correct; | |||
| } | |||
| /** | |||
| * @param message introduce the message you want to ask to the user | |||
| * @param validate validate the option you want to compare if it is equal to | |||
| * other one. | |||
| * @return true if it matches any asnwers and false if it does not. | |||
| */ | |||
| public static boolean one(String message, char validate) { | |||
| int index = 0; | |||
| System.out.println(message); | |||
| String validateStr = validate + ""; | |||
| validate = validateStr.toLowerCase().charAt(index); | |||
| char c = Util.myInput.nextLine().toLowerCase().charAt(index); | |||
| if (validate == c) | |||
| return true; | |||
| return false; | |||
| } | |||
| public static boolean one(char[] validate, char election) { | |||
| for (int i = 0; i < validate.length; i++) { | |||
| if (validate[i] == election) { | |||
| correct = true; | |||
| } else { | |||
| correct = false; | |||
| } | |||
| } | |||
| return correct; | |||
| } | |||
| /** | |||
| * @param dni introduce 8 digits for your dni | |||
| * @return the correct char for your dni (String) | |||
| */ | |||
| public static String DNIgeneratorChar(int dni) { | |||
| String str = "TRWAGMYFPDXBNJZSQVHLCKE"; | |||
| char letra = 'a'; | |||
| int result = dni % str.length(); | |||
| String dniStr = null; | |||
| dniStr = String.valueOf(dni); | |||
| if (REGEXP1.matcher(dniStr).matches()) { | |||
| letra = str.charAt(result); | |||
| } else { | |||
| System.out.print("Dni invalido\n"); | |||
| System.out.println("Presione enter para continuar..."); | |||
| Util.myInput.nextLine(); | |||
| } | |||
| return dniStr + letra; | |||
| } | |||
| /** | |||
| * @param dni introduce 8 digits for your dni | |||
| * @return the correct char for your dni (String) | |||
| */ | |||
| public static String DNIgeneratorChar(String dni) { | |||
| String str = "TRWAGMYFPDXBNJZSQVHLCKE"; | |||
| char letra = 'a'; | |||
| // parsing the dni String to int in order to give us the correct mod for the | |||
| // calculation | |||
| int intDni = Integer.parseInt(dni); | |||
| int result = intDni % str.length(); | |||
| String dniStr = null; | |||
| // parsing the dni int to String | |||
| dniStr = String.valueOf(dni); | |||
| if (REGEXP1.matcher(dniStr).matches()) { | |||
| letra = str.charAt(result); | |||
| } else { | |||
| System.out.print("Dni invalido\n"); | |||
| System.out.println("Presione enter para continuar..."); | |||
| Util.myInput.nextLine(); | |||
| } | |||
| return dniStr + letra; | |||
| } | |||
| /** | |||
| * @param dni validates your dni | |||
| * @return true if its correct and false otherwise | |||
| */ | |||
| public boolean validateDNI(String dni) { | |||
| return Arrays.binarySearch(INVALIDOS, dni) < 0 // (1) | |||
| && REGEXP.matcher(dni).matches() // (2) | |||
| && dni.charAt(8) == DIGITO_CONTROL.charAt(Integer.parseInt(dni.substring(0, 8)) % 23); // (3) | |||
| } | |||
| /** | |||
| * @param numStr | |||
| * @returns only digits from the inserted String | |||
| */ | |||
| public int strToInt(String numStr) { | |||
| int num = 0; | |||
| try { | |||
| num = Integer.parseInt(numStr); | |||
| } catch (NumberFormatException ex) { | |||
| ex.printStackTrace(); | |||
| } | |||
| return num; | |||
| } | |||
| /** | |||
| * @return generate a random localDate | |||
| */ | |||
| public static LocalDate rndLocalDate() { | |||
| long minDay = LocalDate.of(1970, 1, 1).toEpochDay(); | |||
| LocalDate lt = LocalDate.now(); | |||
| int maxDay = lt.getYear(); | |||
| long randomDay = ThreadLocalRandom.current().nextLong(minDay, maxDay); | |||
| LocalDate randomDate = LocalDate.ofEpochDay(randomDay); | |||
| return randomDate; | |||
| } | |||
| /** | |||
| * @param min the year you wanna put | |||
| * @return a random localDate | |||
| */ | |||
| public static LocalDate rndLocalDate(LocalDate min) { | |||
| // long minDay = min.toEpochDay(); | |||
| LocalDate lt = LocalDate.now(); | |||
| int maxDay = lt.getYear(); | |||
| int minDay = min.getYear(); | |||
| // long randomDay = ThreadLocalRandom.current().nextLong(minDay, maxDay); | |||
| long randomDay = ThreadLocalRandom.current().nextLong(minDay, maxDay); | |||
| LocalDate randomDate = LocalDate.ofEpochDay(randomDay); | |||
| return randomDate; | |||
| } // public static GregorianCalendar birthFormat() { | |||
| // System.out.println(" Fecha (dd-mm-yyyy)"); | |||
| // userStr = Util.myInput.nextLine(); | |||
| // SimpleDateFormat sdf = new SimpleDateFormat("DD-MM-YYYY"); | |||
| // // GregorianCalendar birth = null; | |||
| // do { | |||
| // try { | |||
| // Date date = sdf.parse(userStr); | |||
| // birth = new GregorianCalendar(); | |||
| // birth.setTime(date); | |||
| // correct = true; | |||
| // } catch (Exception e) { | |||
| // correct = false; | |||
| // System.out.println("The format that you've introduced is not correct"); | |||
| // } | |||
| // } while (!correct); | |||
| // return birth; | |||
| // } | |||
| /** | |||
| * @param <T> | |||
| * @param values the enum you would like to loop | |||
| * @return the choice you made | |||
| */ | |||
| public static <T extends Enum<T>> Enum<T> selectEnum(T[] values) { | |||
| do { | |||
| System.out.println("These are the options avaliable.\nPlease select one of these."); | |||
| for (int i = 0; i < values.length; i++) { | |||
| System.out.println(i + " " + values[i]); | |||
| } | |||
| String message = "Select a number "; | |||
| int choice = Util.validateInt(message, 0, values.length); | |||
| for (int i = 0; i < values.length; i++) { | |||
| if (i == choice) { | |||
| return values[i]; | |||
| } else { | |||
| correct = false; | |||
| } | |||
| } | |||
| System.out.println("Your choice must be between the range"); | |||
| } while (correct); | |||
| return null; | |||
| } | |||
| /** | |||
| * @param option you must select | |||
| * @return the data that has matched with the input of the user; or null if it | |||
| * doens't | |||
| */ | |||
| public static <T> T checkOptions(String[] option) { | |||
| do { | |||
| System.out.println("Introduce one answer for the avaliable options " + Arrays.toString(option)); | |||
| String usr = Util.myInput.nextLine(); | |||
| for (int i = 0; i < option.length; i++) { | |||
| if (option[i].equalsIgnoreCase(usr)) { | |||
| return (T) usr; | |||
| } else { | |||
| correct = false; | |||
| } | |||
| } | |||
| System.out.println("Please insert a valid option"); | |||
| } while (!correct); | |||
| return null; | |||
| } | |||
| /** | |||
| * @param min LocalDate you want to insert | |||
| * @param max LocalDate youw ant to insert | |||
| * @return random Date between the range | |||
| */ | |||
| public static LocalDate rndLD(LocalDate min, LocalDate max) { | |||
| long minDay = LocalDate.of(min.getYear(), min.getMonth(), min.getDayOfMonth()).toEpochDay(); | |||
| long maxDay = LocalDate.of(max.getYear(), max.getMonth(), max.getDayOfMonth()).toEpochDay(); | |||
| long randomDay = ThreadLocalRandom.current().nextLong(minDay, maxDay); | |||
| LocalDate rnDate = LocalDate.ofEpochDay(randomDay); | |||
| return rnDate; | |||
| } | |||
| /** | |||
| * @param dni | |||
| * @return el dni | |||
| */ | |||
| public static char letraNIF(int dni) { | |||
| String tabla = "TRWAGMYFPDXBNJZSQVHLCKE"; | |||
| int modulo = dni % 23; | |||
| return tabla.charAt(modulo); | |||
| } | |||
| } | |||
| @ -0,0 +1,57 @@ | |||
| package Lib; | |||
| import java.time.LocalDate; | |||
| import java.time.ZoneId; | |||
| import java.util.ArrayList; | |||
| import java.util.GregorianCalendar; | |||
| public class Conversion { | |||
| static ArrayList<Object> arrayListObj = new ArrayList<Object>(); | |||
| static ArrayList<Integer> arrayList = new ArrayList<Integer>(); | |||
| private ArrayList<Object> maxSpeed; | |||
| public static <T> ArrayList<Object> arrToArrListObj(T[] SPEEDARRAY) { | |||
| for (T t : SPEEDARRAY) { | |||
| arrayListObj.add(t); | |||
| } | |||
| return arrayListObj; | |||
| } | |||
| /** | |||
| * | |||
| * @param <T> | |||
| * @param SPEEDARRAY recieves a Generic array | |||
| * @returns an Integer arrayList | |||
| */ | |||
| public static <T> ArrayList<Integer> arrToArrList(T[] SPEEDARRAY) { | |||
| for (T t : SPEEDARRAY) { | |||
| arrayList.add((Integer) t); | |||
| } | |||
| return arrayList; | |||
| } | |||
| public String showAll() { | |||
| String concate = ""; | |||
| for (Object integer : maxSpeed) { | |||
| concate += (integer + ","); | |||
| } | |||
| return concate; | |||
| } | |||
| /** | |||
| * | |||
| * @param date localdate | |||
| * @return gregorianCalendar | |||
| */ | |||
| public static GregorianCalendar convertLDtoGre(LocalDate date) { | |||
| GregorianCalendar gc = GregorianCalendar.from(date.atStartOfDay(ZoneId.systemDefault())); | |||
| return gc; | |||
| } | |||
| } | |||
| @ -0,0 +1,76 @@ | |||
| package Lib; | |||
| import java.util.ArrayList; | |||
| import java.util.Arrays; | |||
| public class MyArr { | |||
| /** | |||
| * | |||
| * @param original original array | |||
| * @param implement the new array you want to merge with the previous one | |||
| * @returns the new emerged array (int) | |||
| */ | |||
| public static int[] mergeArray(int original[], int implement[]) { | |||
| int newLength = original.length + implement.length; | |||
| int newArr[] = Arrays.copyOf(original, newLength); | |||
| for (int i = 0; i < implement.length; i++) { | |||
| newArr[original.length + i] = implement[i]; | |||
| } | |||
| return newArr; | |||
| } | |||
| /** | |||
| * | |||
| * @param <T> | |||
| * @param original | |||
| * @param implement | |||
| * @return the new implement obj array | |||
| */ | |||
| public static <T> T[] mergeArray(T original[], T implement[]) { | |||
| int newLength = original.length + implement.length; | |||
| T[] newArr = Arrays.copyOf(original, newLength); | |||
| for (int i = 0; i < implement.length; i++) { | |||
| newArr[original.length + i] = implement[i]; | |||
| } | |||
| return newArr; | |||
| } | |||
| /** | |||
| * | |||
| * @param <T> | |||
| * @param arr | |||
| * @return the random obj selected | |||
| */ | |||
| public static <T> T getRndValueArr(T arr[]) { | |||
| // Store the index in a variable | |||
| // int rnd = (int) (Math.random() * arr.length); | |||
| int rnd = (Util.random).nextInt(arr.length); | |||
| // Then access it using another variable | |||
| T random = (arr[rnd]); | |||
| return random; | |||
| } | |||
| public static <T> Object[] mergeObj(Object[] eggs, Object[] perls) { | |||
| int newLength = eggs.length + perls.length; | |||
| Object[] newArr = Arrays.copyOf(eggs, newLength); | |||
| try { | |||
| for (int i = 0; i < perls.length; i++) { | |||
| newArr[eggs.length + i] = perls[i]; | |||
| } | |||
| } catch (ArrayStoreException ase) { | |||
| ase.printStackTrace(); | |||
| } | |||
| return newArr; | |||
| } | |||
| public String getRandom(ArrayList<String> array) { | |||
| int index = 0; | |||
| index = Util.random.nextInt(array.size()); | |||
| System.out.println("This is the index " + index); | |||
| // array.remove(index); | |||
| return array.get(index); | |||
| } | |||
| } | |||
| @ -0,0 +1,315 @@ | |||
| package Lib; | |||
| import java.util.Scanner; | |||
| import java.util.UUID; | |||
| import java.text.SimpleDateFormat; | |||
| import java.time.LocalDate; | |||
| import java.time.format.DateTimeFormatter; | |||
| import java.time.temporal.TemporalAccessor; | |||
| import java.util.Date; | |||
| import java.util.GregorianCalendar; | |||
| import java.util.Random; | |||
| public class Util { | |||
| public static Scanner myInput = new Scanner(System.in); | |||
| public static Random random = new Random(); | |||
| private static boolean correct = true; | |||
| public static void pause() { | |||
| System.out.println("Press enter to continue ...."); | |||
| myInput.nextLine(); | |||
| } | |||
| public static int randBetween(int start, int end) { | |||
| return start + (int) Math.round(Math.random() * (end - start)); | |||
| } | |||
| public static int random(int min, int max) { | |||
| Random r = new Random(); | |||
| return r.nextInt(max - min + 1) + min; | |||
| } | |||
| public static double randomDouble(int min, int max) { | |||
| Random r = new Random(); | |||
| return r.nextInt(max - min + 1) + min; | |||
| } | |||
| public static void clearScreen() { | |||
| System.out.println("\u000C"); | |||
| } | |||
| public static void cleanScreen() { | |||
| System.out.print("\033[H\033[2J"); | |||
| System.out.flush(); | |||
| } | |||
| /** | |||
| * | |||
| * @param message | |||
| * @param max | |||
| * @param min | |||
| * @return | |||
| */ | |||
| public static int validateInt(String message, int min, int max) { | |||
| int userInt = 0; | |||
| do { | |||
| try { | |||
| System.out.println(message); | |||
| userInt = myInput.nextInt(); | |||
| // userInt = Integer.parseInt(Util.myInput.nextLine()); | |||
| if (correct = userInt >= min && userInt <= max) { | |||
| correct = true; | |||
| } else { | |||
| System.out.println("The number must be between" + min + " and " + max); | |||
| correct = false; | |||
| } | |||
| } catch (NumberFormatException e) { | |||
| System.out.println("Error"); | |||
| Util.pause(); | |||
| } | |||
| } while (!correct); | |||
| return userInt; | |||
| } | |||
| /** | |||
| * | |||
| * @param message to validate | |||
| * @return DOUBLE | |||
| */ | |||
| public static double validateDouble(String message) { | |||
| double userDouble = 0; | |||
| do { | |||
| try { | |||
| System.out.println(message); | |||
| userDouble = myInput.nextDouble(); | |||
| // userDouble = Double.parseDouble(Util.myInput.nextLine()); | |||
| correct = true; | |||
| } catch (NumberFormatException e) { | |||
| System.out.println("Error"); | |||
| Util.pause(); | |||
| } | |||
| } while (!correct); | |||
| return userDouble; | |||
| } | |||
| public static String validateString(String userStr, String errorMs) { | |||
| userStr = null; | |||
| String compare = ""; | |||
| do { | |||
| correct = userStr.equals(compare); | |||
| System.out.println("Introduce un String "); | |||
| try { | |||
| userStr = Util.myInput.nextLine(); | |||
| } catch (NumberFormatException e) { | |||
| System.out.println(errorMs); | |||
| correct = false; | |||
| } | |||
| } while (!correct); | |||
| return userStr; | |||
| } | |||
| public String validateString1(String userStr) { | |||
| userStr = null; | |||
| String compare = ""; | |||
| do { | |||
| correct = userStr.equals(compare); | |||
| System.out.println("Introduce un String "); | |||
| try { | |||
| userStr = Util.myInput.nextLine(); | |||
| } catch (NumberFormatException e) { | |||
| System.out.println("Error: El input no es un String"); | |||
| correct = false; | |||
| } | |||
| } while (!correct); | |||
| return userStr; | |||
| } | |||
| /** | |||
| * | |||
| * @param message | |||
| * @param minLenght | |||
| * @param maxLenght | |||
| * @return | |||
| */ | |||
| public static String validateString2(String message, int minLenght, int maxLenght) { | |||
| String userStr; | |||
| // No se inicializa porque este | |||
| // si data hubiera sido un atributo hubiese sido inicializado como null | |||
| do { | |||
| System.out.print(message); | |||
| userStr = Util.myInput.nextLine(); | |||
| correct = userStr.length() >= minLenght && userStr.length() <= maxLenght; | |||
| if (!correct) { | |||
| System.out.printf("Longitud minima %d, maxima %d \n", minLenght, maxLenght); | |||
| Util.pause(); | |||
| } | |||
| } while (!correct); | |||
| return userStr; | |||
| } | |||
| /** | |||
| * | |||
| * @return | |||
| */ | |||
| public static int[] validateArray() { | |||
| System.out.println("***VALIDACION DE UN ARRAY DE ENTEROS***"); | |||
| System.out.println("Introduce la longitud del array"); | |||
| int userInt; | |||
| int array[] = new int[myInput.nextInt()]; | |||
| try { | |||
| String message = ("Introduce un numero para el array "); | |||
| for (int i = 0; i < array.length; i++) { | |||
| int userInt1 = 0; | |||
| do { | |||
| System.out.print(message); | |||
| try { | |||
| userInt1 = Integer.parseInt(Util.myInput.nextLine()); | |||
| Util.correct = true; | |||
| Util.pause(); | |||
| } catch (NumberFormatException e) { | |||
| System.out.println("Error: El input no es un integer"); | |||
| Util.pause(); | |||
| Util.correct = false; | |||
| } | |||
| } while (!Util.correct); | |||
| userInt = userInt1; | |||
| array[i] = (userInt + (i + 1)); | |||
| } | |||
| // estos errores no tendrian que estar controlados porque son evitables | |||
| } catch (Exception e) { | |||
| System.out.println("El dato tiene que ser de tipo integer"); | |||
| } | |||
| return array; | |||
| } | |||
| // min y max numeros aleatorios a generar | |||
| public static void fillArrayRandom(int[] array, int min, int max) { | |||
| for (int i = 0; i < array.length; i++) { | |||
| array[i] = random.nextInt(max - min + 1) + min; | |||
| } | |||
| } | |||
| /** | |||
| * | |||
| * @param date | |||
| * @return date formated with hour minute and seconds | |||
| */ | |||
| public String dateFrmTime(LocalDate date) { | |||
| DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); | |||
| return dtf.format(date); | |||
| } | |||
| /** | |||
| * | |||
| * @param date | |||
| * @return date formatted only with year | |||
| */ | |||
| public static String dateFrmYear(LocalDate date) { | |||
| DateTimeFormatter dt = DateTimeFormatter.ofPattern("dd/MM/yyyy"); | |||
| return dt.format(date); | |||
| } | |||
| /** | |||
| * | |||
| * @param date | |||
| * @return date formatted only with year | |||
| */ | |||
| public static String dateFrmYear(Date date) { | |||
| if (date != null) { | |||
| SimpleDateFormat dt = new SimpleDateFormat("dd/MM/yyyy"); | |||
| return dt.format(date); | |||
| } | |||
| return null; | |||
| } | |||
| /** | |||
| * | |||
| * @param date gregorian calendar | |||
| * @return date formatted only with year | |||
| */ | |||
| public static String dateFrmYear(GregorianCalendar date) { | |||
| if (date != null) { | |||
| try { | |||
| SimpleDateFormat dt = new SimpleDateFormat("dd/MM/yyyy"); | |||
| dt.setCalendar(date); | |||
| return dt.format(date.getTime()); | |||
| } catch (StackOverflowError sf) { | |||
| sf.printStackTrace(); | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| /** | |||
| * | |||
| * @return a class that represents an immutable universally unique identifier | |||
| * (UUID). A UUID represents a 128-bit value. | |||
| */ | |||
| public static String generateString() { | |||
| String uuid = UUID.randomUUID().toString(); | |||
| return uuid; | |||
| } | |||
| public static String checkAnswer(String option1, String option2) { | |||
| String user = ""; | |||
| do { | |||
| System.out.println("Please write these two avaliable options " + (option1) + " " + option2); | |||
| user = Util.myInput.nextLine(); | |||
| if (user.equalsIgnoreCase(option1)) { | |||
| return option1; | |||
| } else if (user.equalsIgnoreCase(option2)) { | |||
| return option2; | |||
| } else { | |||
| System.out | |||
| .println("Your answer must match with the avaliable options.\nPlease write again your option."); | |||
| correct = false; | |||
| } | |||
| } while (correct = true); | |||
| return "Error"; | |||
| } | |||
| public static char letraNIF(int dni) { | |||
| String tabla = "TRWAGMYFPDXBNJZSQVHLCKE"; | |||
| int modulo = dni % 23; | |||
| return tabla.charAt(modulo); | |||
| } | |||
| public static boolean validarNIF(String nif) { | |||
| if (nif != null && nif.length() >= 2) { | |||
| nif = nif.toUpperCase(); | |||
| StringBuilder dniString = new StringBuilder(); | |||
| // Cogemos como letra el último caracter del NIF | |||
| char letra = nif.charAt(nif.length() - 1); | |||
| char c; | |||
| for (int i = 0; i < nif.length(); i++) { | |||
| // Si es un dígito lo añadimos a dniString | |||
| c = nif.charAt(i); | |||
| if (Character.isDigit(c)) { | |||
| dniString.append(c); | |||
| } | |||
| } | |||
| return !dniString.toString().equals("") && letra == letraNIF(Integer.parseInt(dniString.toString())); | |||
| } | |||
| return false; | |||
| } | |||
| } | |||
| @ -0,0 +1,170 @@ | |||
| package Lib; | |||
| import java.util.Formatter; | |||
| public class strM { | |||
| public static char charAt(String a) { | |||
| char result = 'a'; | |||
| // Returns the character at the specified index position. | |||
| for (int i = 0; i < a.length(); i++) { | |||
| result = (a.charAt(i)); | |||
| } | |||
| return result; | |||
| } | |||
| public static String replace(String str, char searchChar, char newChar) { | |||
| // The replace() method searches a string for a specified character, and returns | |||
| // a new string where the specified character(s) are replaced. | |||
| return (str.replace(searchChar, newChar)); | |||
| } | |||
| public static int indexOf(String str, char character) { | |||
| // The indexOf() method returns the position of the first occurrence of | |||
| // specified character(s) in a string. | |||
| return (str.indexOf(character)); | |||
| } | |||
| public static boolean startsWith(String str, String searchString) { | |||
| return (str.startsWith(searchString)); | |||
| } | |||
| public static boolean endsWith(String str, String searchString) { | |||
| return (str.endsWith(searchString)); | |||
| } | |||
| public static void split(String str, String searchString, int numberOfArrays) { | |||
| // The string split() method breaks a given string around matches of the given | |||
| // regular expression | |||
| String[] arrStr = (str.split(searchString, numberOfArrays)); | |||
| for (String a : arrStr) | |||
| System.out.print(a + "\n"); | |||
| // System.out.println(); | |||
| } | |||
| public static int compareTo(String str, String anotherString) { | |||
| // System.out.println(str.compareTo(anotherString)); | |||
| // Returns: An int value: 0 if the string is equal to the other string. | |||
| // < 0 if the string is lexicographically less than the other string | |||
| // > 0 if the string is lexicographically greater than the other string (more | |||
| // characters) | |||
| return (str.compareTo(anotherString)); | |||
| } | |||
| public static int compareToIngnoreCase(String str, String anotherString) { | |||
| // Compare two strings, ignoring lower case and upper case differences: | |||
| return (str.compareToIgnoreCase(anotherString)); | |||
| } | |||
| public static boolean contains(String str, String searchString) { | |||
| // The contains() method checks whether a string contains a sequence of | |||
| // characters. | |||
| // Returns true if the characters exist and false if not. | |||
| return (str.contains(searchString)); | |||
| } | |||
| public static boolean contentEquals(String str, String compareString) { | |||
| // The contentEquals() method searches a string to find out if it contains the | |||
| // exact same sequence of characters in the specified string or StringBuffer. | |||
| return (str.contentEquals(compareString)); | |||
| } | |||
| public static String concat(String str, String addString) { | |||
| return (str.concat(addString)); | |||
| } | |||
| public static String copyValueOf(char[] myChar, String removeSpaces, int offset, int count) { | |||
| return (removeSpaces.copyValueOf(myChar, offset, count)); | |||
| } | |||
| public static boolean isEmpty(String str) { | |||
| return (str.isEmpty()); | |||
| } | |||
| public static String trim(String str) { | |||
| // trim() The trim() method removes whitespace from both ends of a string and | |||
| // returns a new string, without modifying the original string. Whitespace in | |||
| // this context is all the whitespace characters (space, tab, no-break space, | |||
| // etc.) | |||
| return (str.trim()); | |||
| } | |||
| public static boolean equals(String str, String anotherObject) { | |||
| // The Java String class equals() method compares the two given strings based on | |||
| // the content of the string. If any character is not matched, it returns false. | |||
| // If all characters are matched, it returns true. The String equals() method | |||
| // overrides the equals() method of the Object class. | |||
| return (str.equals(anotherObject)); | |||
| } | |||
| public static boolean equalsIgnoreCase(String str, String anotherObject) { | |||
| return (str.equalsIgnoreCase(anotherObject)); | |||
| } | |||
| public static String substring(String str, int offset, int count) { | |||
| // A part of String is called substring. In other words, substring is a subset | |||
| // of another String. Java String class provides the built-in substring() method | |||
| // that extract a substring from the given string by using the index values | |||
| // passed as an argument. | |||
| // In case of substring() method startIndex is inclusive and endIndex is | |||
| // exclusive. | |||
| return (str.substring(offset, count)); | |||
| } | |||
| public static int indexOf(String str, int indice) { | |||
| // The indexOf() method is used in Java to retrieve the index position at which | |||
| // a particular character or substring appears in another string. You can use a | |||
| // second argument to start your search after a particular index number in the | |||
| // string. If the specified letter or letters cannot be found, indexOf() returns | |||
| // -1 | |||
| return (str.indexOf(str, indice)); | |||
| } | |||
| public static int lastIndexOf(String str, String searchString) { | |||
| return (str.lastIndexOf(searchString)); | |||
| } | |||
| public static int lastIndexOf(String str, int searchIndex) { | |||
| return (str.lastIndexOf(searchIndex)); | |||
| } | |||
| public static String replace(String str, String searchString, String newString) { | |||
| return (str.replace(searchString, newString)); | |||
| } | |||
| public static String replaceAll(String str, String searchString, String newString) { | |||
| return (str.replaceAll(searchString, newString)); | |||
| // "[^abc]" [0 - 9] | |||
| // System.out.println(s.replaceAll("[au]", "o")); | |||
| // System.out.println(s.replaceAll("perro|gato", "animal")); | |||
| // System.out.println(s.replaceAll("e.a", "illa")); | |||
| // System.out.println(s.replaceAll("^Hola", "Te saludo")); | |||
| // System.out.println(s.replaceAll("Hola$", "Te saludo")); | |||
| // System.out.println(s.replaceAll("\\d", "*")); | |||
| // System.out.println(s.replaceAll("\\s", "")); | |||
| // System.out.println(s.replaceAll("\\s+", " ")); | |||
| } | |||
| public static String valueOf(String str, int convert) { | |||
| // The java string valueOf() method converts different types of values into | |||
| // string. By the help of string valueOf() method, you can convert int to | |||
| // string, long to string, boolean to string, character to string, float to | |||
| // string, double to string, object to string and char array to string. | |||
| return (str = String.valueOf(convert)); | |||
| } | |||
| public static String stringFormat(Object args) { | |||
| // The java string format() method returns the formatted string by given locale, | |||
| // format and arguments. | |||
| return new Formatter().format("%s", args).toString(); | |||
| } | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| package com.primerEjemplo; | |||
| import com.primerEjemplo.Modelo.Servicio.Servicio; | |||
| import org.springframework.context.support.ClassPathXmlApplicationContext; | |||
| import java.io.IOException; | |||
| public class App { | |||
| public static void main(String[] args) throws IOException { | |||
| ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("beans.xml"); | |||
| // Servicio servicio = new Servicio(); | |||
| // servicio = appContext.getBean(Servicio.class); | |||
| Tienda tienda = appContext.getBean(Tienda.class); | |||
| appContext.close(); | |||
| } | |||
| } | |||
| @ -0,0 +1,18 @@ | |||
| package com.primerEjemplo.Modelo.Interfaz; | |||
| import com.primerEjemplo.Modelo.Libro; | |||
| import java.util.List; | |||
| public interface IServicioConsulta { | |||
| List<Libro> ejecutarLibro(); | |||
| IServicioConsulta cualquierCategoria(String... generos); | |||
| IServicioConsulta categorias(String... generos); | |||
| IServicioConsulta anyo(String year); | |||
| IServicioConsulta porPeriodoAnyos(String from, String to); | |||
| IServicioConsulta buscarTitulo(String titulo); | |||
| } | |||
| @ -0,0 +1,17 @@ | |||
| package com.primerEjemplo.Modelo.Interfaz; | |||
| import com.primerEjemplo.Modelo.Libro; | |||
| import java.io.FileNotFoundException; | |||
| import java.util.Collection; | |||
| import java.util.List; | |||
| public interface IServicioLibro { | |||
| Libro buscarLibro(String isbn) throws FileNotFoundException; | |||
| boolean anyadirLibro(Libro libro); | |||
| boolean venderLibro(String isbn); | |||
| String mostrarLibroResumen(String isbn); | |||
| Collection<Libro> mostrarLibrosResumen(); | |||
| Collection<Libro> mostrarLibros(); | |||
| } | |||
| @ -0,0 +1,29 @@ | |||
| package com.primerEjemplo.Modelo.Interfaz; | |||
| import com.primerEjemplo.Modelo.Libro; | |||
| import com.primerEjemplo.Modelo.ParserLibros; | |||
| import java.io.File; | |||
| import java.io.FileNotFoundException; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| public class InterfazDatos { | |||
| public static List<Libro> getDatos() throws FileNotFoundException { | |||
| List<Libro> libros; | |||
| File file = new File("/home/michael/Documents/SpringProjects/SpringCore/Libros/src/main/resources/libros.json"); | |||
| ParserLibros parserLibros = new ParserLibros(file); | |||
| if (parserLibros.startParser()) { | |||
| System.out.println("Datos Parseados"); | |||
| libros = parserLibros.getLibros(); | |||
| } else { | |||
| System.out.println("Error al parsear"); | |||
| return null; | |||
| } | |||
| return libros; | |||
| } | |||
| } | |||
| @ -0,0 +1,164 @@ | |||
| package com.primerEjemplo.Modelo; | |||
| import com.github.javafaker.Faker; | |||
| import java.io.File; | |||
| import java.text.SimpleDateFormat; | |||
| import java.time.LocalDate; | |||
| import java.time.format.DateTimeFormatter; | |||
| import java.util.Calendar; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import java.util.Objects; | |||
| public class Libro { | |||
| private final String isbn; | |||
| private final String titulo; | |||
| private final long numeroPaginas; | |||
| private final String fechaPublicacion; | |||
| private final String url; | |||
| private final String descripcionCorta; | |||
| private final String descripcionLarga; | |||
| private final String estado; | |||
| private final List<String> autores; | |||
| private final List<String> categorias; | |||
| private String anyo; | |||
| private LocalDate localDate; | |||
| public Libro(String isbn, String titulo, long numeroPaginas, String fechaPublicacion, String url, String descripcionCorta, String descripcionLarga, String estado, List<String> autores, List<String> categorias) { | |||
| this.isbn = isbn; | |||
| this.titulo = titulo; | |||
| this.numeroPaginas = numeroPaginas; | |||
| this.fechaPublicacion = conversionFecha(fechaPublicacion); | |||
| this.url = url; | |||
| this.descripcionCorta = descripcionCorta; | |||
| this.descripcionLarga = descripcionLarga; | |||
| this.estado = estado; | |||
| this.autores = autores; | |||
| this.categorias = categorias; | |||
| } | |||
| public String getIsbn() { | |||
| return isbn; | |||
| } | |||
| public String getTitulo() { | |||
| return titulo; | |||
| } | |||
| public long getNumeroPaginas() { | |||
| return numeroPaginas; | |||
| } | |||
| public String getFechaPublicacion() { | |||
| return fechaPublicacion; | |||
| } | |||
| public String getUrl() { | |||
| return url; | |||
| } | |||
| public String getDescripcionCorta() { | |||
| return descripcionCorta; | |||
| } | |||
| public String getDescripcionLarga() { | |||
| return descripcionLarga; | |||
| } | |||
| public String getEstado() { | |||
| return estado; | |||
| } | |||
| public List<String> getAutores() { | |||
| return autores; | |||
| } | |||
| public List<String> getCategorias() { | |||
| return categorias; | |||
| } | |||
| public String conversionFecha(String fecha) { | |||
| if (fecha == null) { | |||
| return generarFecha(); | |||
| } | |||
| DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"); | |||
| DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyy"); | |||
| localDate = LocalDate.parse(fecha, inputFormatter); | |||
| anyo = String.valueOf(localDate.getYear()); | |||
| return outputFormatter.format(localDate); | |||
| } | |||
| public String getAnyo(){ | |||
| if (anyo == null){ | |||
| anyo = String.valueOf(localDate.getYear()); | |||
| } | |||
| return anyo; | |||
| } | |||
| public String generarFecha(){ | |||
| Faker faker = new Faker(); | |||
| Calendar calendar = Calendar.getInstance(); | |||
| calendar.set(Calendar.MONTH,11); | |||
| calendar.set(Calendar.DATE, 5); | |||
| calendar.set(Calendar.YEAR,2009); | |||
| Calendar calendar1 = Calendar.getInstance(); | |||
| calendar1.set(Calendar.MONTH,11); | |||
| calendar1.set(Calendar.DATE, 5); | |||
| calendar1.set(Calendar.YEAR,2009); | |||
| Date date = faker.date().between(calendar.getTime(),calendar1.getTime()); | |||
| SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); | |||
| String fechaFormateada = ft.format(date); | |||
| localDate = LocalDate.parse(fechaFormateada); | |||
| anyo = String.valueOf(localDate.getYear()); | |||
| return fechaFormateada; | |||
| } | |||
| @Override | |||
| public boolean equals(Object o) { | |||
| if (this == o) return true; | |||
| if (o == null || getClass() != o.getClass()) return false; | |||
| Libro libro = (Libro) o; | |||
| return Objects.equals(isbn, libro.isbn) && Objects.equals(fechaPublicacion, libro.fechaPublicacion) && Objects.equals(estado, libro.estado) && Objects.equals(categorias, libro.categorias); | |||
| } | |||
| @Override | |||
| public int hashCode() { | |||
| return Objects.hash(isbn, fechaPublicacion, estado, categorias); | |||
| } | |||
| public String printarResumenLibro(){ | |||
| return "Libro{" + | |||
| "isbn='" + isbn + '\'' + | |||
| ", titulo='" + titulo + '\'' + | |||
| ", numeroPaginas=" + numeroPaginas + | |||
| ", fechaPublicacion='" + fechaPublicacion + '\'' + | |||
| ", estado='" + estado + '\'' + | |||
| ", autores=" + autores + | |||
| ", categorias='" + categorias + '\'' + | |||
| '}'; | |||
| } | |||
| @Override | |||
| public String toString() { | |||
| return "Libro{" + | |||
| "isbn='" + isbn + '\'' + | |||
| ", titulo='" + titulo + '\'' + | |||
| ", numeroPaginas=" + numeroPaginas + | |||
| ", fechaPublicacion='" + fechaPublicacion + '\'' + | |||
| ", url='" + url + '\'' + | |||
| ", descripcionCorta='" + descripcionCorta + '\'' + | |||
| ", descripcionLarga='" + descripcionLarga + '\'' + | |||
| ", estado='" + estado + '\'' + | |||
| ", autores=" + autores + | |||
| ", categorias='" + categorias + '\'' + | |||
| '}'; | |||
| } | |||
| } | |||
| @ -0,0 +1,106 @@ | |||
| package com.primerEjemplo.Modelo; | |||
| import com.github.javafaker.Faker; | |||
| import org.json.JSONArray; | |||
| import org.json.JSONException; | |||
| import org.json.JSONObject; | |||
| import org.json.JSONTokener; | |||
| import java.io.*; | |||
| import java.nio.charset.StandardCharsets; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.ArrayList; | |||
| import java.util.Calendar; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| public class ParserLibros { | |||
| private List<Libro> libros; | |||
| private final InputStream inputStream; | |||
| private Faker faker = new Faker(); | |||
| public ParserLibros(File file) throws FileNotFoundException { | |||
| inputStream = new FileInputStream(file); | |||
| } | |||
| public boolean startParser() { | |||
| List<String> autores; | |||
| List<String> categorias; | |||
| libros = new ArrayList<>(); | |||
| try { | |||
| int size = inputStream.available(); | |||
| byte[] buffer = new byte[size]; | |||
| inputStream.read(buffer); | |||
| inputStream.close(); | |||
| String json = new String(buffer, StandardCharsets.UTF_8); | |||
| JSONTokener jsonTokener = new JSONTokener(json); | |||
| JSONArray jsonArray = new JSONArray(jsonTokener); | |||
| libros = new ArrayList<>(); | |||
| for (int i = 0; i < jsonArray.length(); i++) { | |||
| JSONObject jsonObject = jsonArray.getJSONObject(i); | |||
| String titulo = jsonObject.getString("title"); | |||
| long numeroPaginas = jsonObject.getLong("pageCount"); | |||
| String estado = jsonObject.getString("status"); | |||
| //Variables que no pueden estar | |||
| String isbn; | |||
| String descripcionCorta; | |||
| String descripcionLarga; | |||
| String url; | |||
| String fechaPublicacion; | |||
| try { | |||
| isbn = jsonObject.getString("isbn"); | |||
| descripcionCorta = jsonObject.getString("shortDescription"); | |||
| descripcionLarga = jsonObject.getString("longDescription"); | |||
| url = jsonObject.getString("thumbnailUrl"); | |||
| fechaPublicacion = jsonObject.getString("publishedDate"); | |||
| } catch (JSONException j) { | |||
| descripcionCorta = null; | |||
| descripcionLarga = null; | |||
| url = null; | |||
| isbn = faker.number().digits(10); | |||
| fechaPublicacion = null; | |||
| } | |||
| //Rellenamos la matriz de autores | |||
| JSONArray matrizAutores = jsonObject.getJSONArray("authors"); | |||
| autores = new ArrayList<>(matrizAutores.length()); | |||
| for (int j = 0; j < matrizAutores.length(); j++) { | |||
| String autoresRecogidos = matrizAutores.getString(j); | |||
| autores.add(autoresRecogidos); | |||
| } | |||
| //Rellenamos la matriz de categorias | |||
| JSONArray matrizCategorias = jsonObject.getJSONArray("categories"); | |||
| categorias = new ArrayList<>(matrizCategorias.length()); | |||
| for (int j = 0; j < matrizCategorias.length(); j++) { | |||
| String categoriasRecogidas = matrizCategorias.getString(j); | |||
| categorias.add(categoriasRecogidas); | |||
| } | |||
| String fechaFormateada = null; | |||
| if (fechaPublicacion != null) { | |||
| fechaFormateada = fechaPublicacion.substring(0, 23); | |||
| } | |||
| libros.add(new Libro(isbn, titulo, numeroPaginas, fechaFormateada, url, descripcionCorta, descripcionLarga, estado, autores, categorias)); | |||
| } | |||
| return true; | |||
| } catch (IOException e) { | |||
| e.printStackTrace(); | |||
| } | |||
| return false; | |||
| } | |||
| public List<Libro> getLibros() { | |||
| return libros; | |||
| } | |||
| } | |||
| @ -0,0 +1,84 @@ | |||
| package com.primerEjemplo.Modelo.Servicio; | |||
| import com.primerEjemplo.Modelo.Interfaz.IServicioConsulta; | |||
| import com.primerEjemplo.Modelo.Interfaz.IServicioLibro; | |||
| import com.primerEjemplo.Modelo.Libro; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import java.time.LocalDate; | |||
| import java.util.Arrays; | |||
| import java.util.List; | |||
| import java.util.function.Predicate; | |||
| public class ImplementaIntefazServicioConsultas implements IServicioConsulta { | |||
| Predicate<Libro> libroPredicate; | |||
| @Autowired | |||
| IServicioLibro iServicioLibro; | |||
| public ImplementaIntefazServicioConsultas() { | |||
| libroPredicate = null; | |||
| } | |||
| @Override | |||
| public List<Libro> ejecutarLibro() { | |||
| // return iServicioLibro.mostrarLibros().stream().filter(libroPredicate).toList(); | |||
| return iServicioLibro.mostrarLibrosResumen().stream().filter(libroPredicate).toList(); | |||
| } | |||
| /** | |||
| * | |||
| * @param categorias busca la primera categoria que encuentra similar | |||
| * @return la interfaz recargada con la nueva logica dentro del predicate que servira al ejecutar el libro. | |||
| */ | |||
| @Override | |||
| public IServicioConsulta cualquierCategoria(String... categorias) { | |||
| Predicate<Libro> cualquierGenero = libro -> Arrays.stream(categorias).anyMatch(libro.getCategorias()::contains); | |||
| libroPredicate = (libroPredicate == null) ? cualquierGenero : libroPredicate.and(cualquierGenero); | |||
| return this; | |||
| } | |||
| /** | |||
| * | |||
| * @param categorias busca todas las categorias que encuentra similar | |||
| * @return la interfaz recargada con la nueva logica dentro del predicate que servira al ejecutar el libro. | |||
| */ | |||
| @Override | |||
| public IServicioConsulta categorias(String... categorias) { | |||
| Predicate<Libro> categoriaEspecifica = libro -> Arrays.stream(categorias).allMatch(libro.getCategorias()::contains); | |||
| libroPredicate = (libroPredicate == null) ? categoriaEspecifica : libroPredicate.and(categoriaEspecifica); | |||
| return this; | |||
| } | |||
| @Override | |||
| public IServicioConsulta anyo(String year) { | |||
| Predicate<Libro> anyo = libro -> libro.getFechaPublicacion().contains(year); | |||
| libroPredicate = (libroPredicate == null) ? anyo : libroPredicate.and(anyo); | |||
| return this; | |||
| } | |||
| @Override | |||
| public IServicioConsulta porPeriodoAnyos(String from, String to) { | |||
| Predicate<Libro> pBetweenYears = (libro -> { | |||
| LocalDate fromYear = LocalDate.of(Integer.parseInt(from), 1, 1); | |||
| LocalDate toYear = LocalDate.of(Integer.parseInt(to), 1, 3); | |||
| LocalDate filmYear = LocalDate.of(Integer.parseInt(libro.getAnyo()), 1, 2); | |||
| return filmYear.isAfter(fromYear) && filmYear.isBefore(toYear); | |||
| }); | |||
| libroPredicate = (libroPredicate == null) ? pBetweenYears: libroPredicate.and(pBetweenYears); | |||
| return this; | |||
| } | |||
| @Override | |||
| public IServicioConsulta buscarTitulo(String titulo) { | |||
| Predicate<Libro> tituloEncontrado = (libro -> libro.getTitulo().toLowerCase().contains(titulo.toLowerCase())); | |||
| libroPredicate = (libroPredicate == null) ? tituloEncontrado : libroPredicate.and(tituloEncontrado); | |||
| return this; | |||
| } | |||
| } | |||
| @ -0,0 +1,79 @@ | |||
| package com.primerEjemplo.Modelo.Servicio; | |||
| import com.primerEjemplo.Modelo.Interfaz.IServicioLibro; | |||
| import com.primerEjemplo.Modelo.Interfaz.InterfazDatos; | |||
| import com.primerEjemplo.Modelo.Libro; | |||
| import com.primerEjemplo.Modelo.ParserLibros; | |||
| import java.io.File; | |||
| import java.io.FileNotFoundException; | |||
| import java.util.ArrayList; | |||
| import java.util.Collection; | |||
| import java.util.List; | |||
| public class ImplementaIntefazServicioGeneral implements IServicioLibro { | |||
| private final List<Libro> libros; | |||
| private Libro libro; | |||
| public ImplementaIntefazServicioGeneral() throws FileNotFoundException { | |||
| libros = InterfazDatos.getDatos(); | |||
| } | |||
| @Override | |||
| public Libro buscarLibro(String isbn) { | |||
| libro = iterarLibros(isbn); | |||
| return libro; | |||
| } | |||
| @Override | |||
| public boolean venderLibro(String isbn) { | |||
| libro = iterarLibros(isbn); | |||
| try{ | |||
| if (libro.getEstado().equalsIgnoreCase("publish")){ | |||
| return libros.remove(libro); | |||
| } | |||
| }catch (NullPointerException n){ | |||
| return false; | |||
| } | |||
| return true; | |||
| } | |||
| @Override | |||
| public String mostrarLibroResumen(String isbn) { | |||
| libro = iterarLibros(isbn); | |||
| if (libro == null){ | |||
| System.out.println("Error"); | |||
| } | |||
| System.out.println(libro.printarResumenLibro()); | |||
| return isbn; | |||
| } | |||
| @Override | |||
| public Collection<Libro> mostrarLibrosResumen() { | |||
| return libros; | |||
| } | |||
| @Override | |||
| public Collection<Libro> mostrarLibros() { | |||
| return libros; | |||
| } | |||
| @Override | |||
| public boolean anyadirLibro(Libro libro) { | |||
| return libros.add(libro); | |||
| } | |||
| public Libro iterarLibros(String isbn){ | |||
| for (Libro value : libros) { | |||
| if (value.getIsbn().equalsIgnoreCase(isbn)) { | |||
| libro = value; | |||
| return libro; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| } | |||
| @ -0,0 +1,77 @@ | |||
| package com.primerEjemplo.Modelo.Servicio; | |||
| import com.primerEjemplo.Modelo.Interfaz.IServicioConsulta; | |||
| import com.primerEjemplo.Modelo.Libro; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.Collection; | |||
| import java.util.List; | |||
| import java.util.stream.Collectors; | |||
| @Service | |||
| public class Servicio { | |||
| @Autowired | |||
| private ImplementaIntefazServicioGeneral implementaIntefaz; | |||
| @Autowired | |||
| private IServicioConsulta iServicioConsulta ; | |||
| public Servicio() { | |||
| } | |||
| //CONSULTAS ESPECIFICAS POR CADALIBRO | |||
| public List<String> mostrarCategorias(){ | |||
| List<String> categorias; | |||
| categorias = implementaIntefaz.mostrarLibros().stream().map(Libro::getCategorias). | |||
| flatMap(Collection::stream).distinct().sorted().collect(Collectors.toList()); | |||
| return categorias; | |||
| } | |||
| public List<Libro> mostrarCategorias(String... generos){ | |||
| return iServicioConsulta.cualquierCategoria(generos).ejecutarLibro(); | |||
| } | |||
| public List<Libro> mostrarPorCategoria(String... genero){ | |||
| return iServicioConsulta.categorias(genero).ejecutarLibro(); | |||
| } | |||
| public List<Libro> encontrarPorFecha(String year){ | |||
| return iServicioConsulta.anyo(year).ejecutarLibro(); | |||
| } | |||
| public List<Libro> encontrarPorPeriodo(String from, String till){ | |||
| return iServicioConsulta.porPeriodoAnyos(from,till).ejecutarLibro(); | |||
| } | |||
| public List<Libro> encontrarPorTitulo(String titulo){ | |||
| return iServicioConsulta.buscarTitulo(titulo).ejecutarLibro(); | |||
| } | |||
| //BUSQUEDA GENERAL | |||
| public List<Libro> mostrarLibros(){ | |||
| return (List<Libro>) implementaIntefaz.mostrarLibros(); | |||
| } | |||
| public String mostrarResumenLibros(String isbn ){ | |||
| return implementaIntefaz.mostrarLibroResumen(isbn); | |||
| } | |||
| public boolean anyadirLibro(Libro libro){ | |||
| return implementaIntefaz.anyadirLibro(libro); | |||
| } | |||
| public boolean venderLibro(String isbn){ | |||
| return implementaIntefaz.venderLibro(isbn); | |||
| } | |||
| public Libro buscarLibro(String isbn){ | |||
| return implementaIntefaz.buscarLibro(isbn); | |||
| } | |||
| } | |||
| @ -0,0 +1,84 @@ | |||
| package com.primerEjemplo; | |||
| import Lib.Control; | |||
| import Lib.Util; | |||
| import com.primerEjemplo.Modelo.Libro; | |||
| import com.primerEjemplo.Modelo.Servicio.Servicio; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import java.util.Scanner; | |||
| public class Tienda { | |||
| private final Servicio servicio; | |||
| @Autowired | |||
| public Tienda(Servicio servicio) { | |||
| this.servicio = servicio; | |||
| menuPrincipal(); | |||
| } | |||
| public void menuPrincipal(){ | |||
| Scanner scanner = Util.myInput; | |||
| String[] opciones ={"Salir", "Mostrar Todos los libros", "Mostrar categorias", "Mostrar por categoria", "Mostrar por ISBN", "Mostrar por titulo", "Mostrar por periodo", "Comprar libro",}; | |||
| String titulo = "BIENVENIDO A NUESTRA TIENDA"; | |||
| int opcion = Control.menuGenerator(0,titulo,opciones); | |||
| String respuesta; | |||
| switch (opcion) { | |||
| case 0 -> System.out.println("HASTA PRONTO !!"); | |||
| case 1 -> servicio.mostrarLibros().forEach(System.out::println); | |||
| case 2 -> servicio.mostrarCategorias().forEach(System.out::println); | |||
| case 3 -> { | |||
| System.out.println("Introduce el catalgo del libro"); | |||
| respuesta = scanner.nextLine(); | |||
| servicio.mostrarPorCategoria(respuesta).forEach(System.out::println); | |||
| } | |||
| case 4 -> { | |||
| System.out.println("Introduce el ISBN del libro"); | |||
| respuesta = scanner.nextLine(); | |||
| System.out.println(servicio.buscarLibro(respuesta)); | |||
| } | |||
| case 5 -> { | |||
| System.out.println("Introduce el titulo del libro"); | |||
| respuesta = scanner.nextLine(); | |||
| servicio.encontrarPorTitulo(respuesta).forEach(System.out::println); | |||
| } | |||
| case 6 -> { | |||
| System.out.println("Introduce el desde que anyo quieres filtrar los libros "); | |||
| respuesta = scanner.nextLine(); | |||
| System.out.println("Introduce el anyo fin que quieres filtrar los libros"); | |||
| String respuesta1 = scanner.nextLine(); | |||
| servicio.encontrarPorPeriodo(respuesta, respuesta1).forEach(System.out::println); | |||
| } | |||
| case 7 -> { | |||
| System.out.println("Introduce el isbn del libro que deseas seleccionar"); | |||
| respuesta = scanner.nextLine(); | |||
| System.out.println(servicio.buscarLibro(respuesta)); | |||
| if (servicio.venderLibro(respuesta)){ | |||
| System.out.println("LIBRO VENDIDO EXITOSAMENTE"); | |||
| }else{ | |||
| System.out.println("LO SENTIMOS EL LIBRO NO ESTA DISPONIBLE"); | |||
| } | |||
| } | |||
| } | |||
| Util.pause(); | |||
| Util.cleanScreen(); | |||
| if(Control.one("Quieres volver al menu principal s/n",'s')){ | |||
| menuPrincipal(); | |||
| }else{ | |||
| System.out.println("Hasta luego !!"); | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <beans xmlns="http://www.springframework.org/schema/beans" | |||
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
| xmlns:context="http://www.springframework.org/schema/context" | |||
| xsi:schemaLocation="http://www.springframework.org/schema/beans | |||
| http://www.springframework.org/schema/beans/spring-beans.xsd | |||
| http://www.springframework.org/schema/context | |||
| http://www.springframework.org/schema/context/spring-context-4.3.xsd"> | |||
| <context:annotation-config /> | |||
| <bean id="implementaIntefazServicioConsultas" class="com.primerEjemplo.Modelo.Servicio.ImplementaIntefazServicioConsultas"/> | |||
| <bean id="implementaIntefazServicioGeneral" class="com.primerEjemplo.Modelo.Servicio.ImplementaIntefazServicioGeneral"/> | |||
| <bean id="tienda" class="com.primerEjemplo.Tienda"/> | |||
| <bean id="servicio" class="com.primerEjemplo.Modelo.Servicio.Servicio"/> | |||
| </beans> | |||
| @ -0,0 +1,3 @@ | |||
| file.path=classpath:imdb_data.csv | |||
| file.csv.separator=; | |||
| file.csv.list_separator=, | |||
| @ -0,0 +1,3 @@ | |||
| # | |||
| #Thu Nov 24 11:27:55 CET 2022 | |||
| com.primerEjemplo.Modelo.Servicio.Servicio=org.springframework.stereotype.Component | |||
| @ -0,0 +1,21 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <beans xmlns="http://www.springframework.org/schema/beans" | |||
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
| xmlns:context="http://www.springframework.org/schema/context" | |||
| xsi:schemaLocation="http://www.springframework.org/schema/beans | |||
| http://www.springframework.org/schema/beans/spring-beans.xsd | |||
| http://www.springframework.org/schema/context | |||
| http://www.springframework.org/schema/context/spring-context-4.3.xsd"> | |||
| <context:annotation-config /> | |||
| <bean id="implementaIntefazServicioConsultas" class="com.primerEjemplo.Modelo.Servicio.ImplementaIntefazServicioConsultas"/> | |||
| <bean id="implementaIntefazServicioGeneral" class="com.primerEjemplo.Modelo.Servicio.ImplementaIntefazServicioGeneral"/> | |||
| <bean id="tienda" class="com.primerEjemplo.Tienda"/> | |||
| <bean id="servicio" class="com.primerEjemplo.Modelo.Servicio.Servicio"/> | |||
| </beans> | |||
| @ -0,0 +1,3 @@ | |||
| file.path=classpath:imdb_data.csv | |||
| file.csv.separator=; | |||
| file.csv.list_separator=, | |||