├── torreShoal ├── src │ ├── main │ │ ├── resources │ │ │ └── application.properties │ │ └── java │ │ │ └── com │ │ │ └── torre │ │ │ └── shoal │ │ │ ├── dto │ │ │ ├── SkillRole.java │ │ │ ├── RequestSearchIdealPerson.java │ │ │ └── And.java │ │ │ ├── models │ │ │ ├── Link.java │ │ │ ├── Language.java │ │ │ ├── Organization.java │ │ │ ├── Analysis.java │ │ │ ├── Stats.java │ │ │ ├── Opportunity.java │ │ │ ├── PersonalityTraitsResults.java │ │ │ ├── ProfessionalCultureGenomeResults.java │ │ │ ├── Group.java │ │ │ ├── Location.java │ │ │ ├── Interest.java │ │ │ ├── Strength.java │ │ │ ├── Job.java │ │ │ ├── Education.java │ │ │ ├── Flags.java │ │ │ ├── Experience.java │ │ │ ├── Bio.java │ │ │ ├── Person.java │ │ │ └── People.java │ │ │ ├── controller │ │ │ ├── Routes.java │ │ │ └── Controller.java │ │ │ ├── services │ │ │ ├── LoginService.java │ │ │ ├── SearchIdealService.java │ │ │ └── implementations │ │ │ │ ├── LoginServiceImplementation.java │ │ │ │ └── SearchIdealServiceImplementation.java │ │ │ ├── constants │ │ │ └── TorreEndpoints.java │ │ │ ├── TorreShoalApplication.java │ │ │ └── manager │ │ │ ├── SearchIdealManager.java │ │ │ └── LoginManager.java │ └── test │ │ └── java │ │ └── com │ │ └── torre │ │ └── shoal │ │ └── TorreShoalApplicationTests.java ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ ├── maven-wrapper.properties │ │ └── MavenWrapperDownloader.java ├── build_deploy.sh ├── Dockerfile ├── .gitignore ├── pom.xml ├── mvnw.cmd └── mvnw ├── README.md ├── .gitignore ├── collectionsPostman └── Backend.postman_collection.json └── log.txt /torreShoal/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=torreShoalBackend 2 | server.port=8081 -------------------------------------------------------------------------------- /torreShoal/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crissebasbol/torreBackend/master/torreShoal/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # torreBackend 2 | This project contains the backend code developed with spring and kotlin as a test for an internship Software developer for Torre 3 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/dto/SkillRole.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class SkillRole { 7 | private String text; 8 | private String experience; 9 | } -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Link.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Link { 7 | private String id; 8 | private String name; 9 | private String address; 10 | } 11 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Language.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Language { 7 | private String code; 8 | private String language; 9 | private String fluency; 10 | } 11 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Organization.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Organization { 7 | private int id; 8 | private String name; 9 | private String picture; 10 | } 11 | -------------------------------------------------------------------------------- /torreShoal/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Analysis.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Analysis { 7 | private String groupId; 8 | private double analysis; 9 | private String section; 10 | } 11 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Stats.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Stats { 7 | private int jobs; 8 | private int education; 9 | private int strengths; 10 | private int interests; 11 | } -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/dto/RequestSearchIdealPerson.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.dto; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class RequestSearchIdealPerson { 9 | 10 | private List and; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/dto/And.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class And { 9 | @JsonProperty("skill/role") 10 | private SkillRole skillRole; 11 | } 12 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Opportunity.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Opportunity { 7 | private String id; 8 | private String interest; 9 | private String field; 10 | private Object data; 11 | } 12 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/PersonalityTraitsResults.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class PersonalityTraitsResults { 9 | private List groups; 10 | private List analyses; 11 | } 12 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/ProfessionalCultureGenomeResults.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class ProfessionalCultureGenomeResults { 9 | private List groups; 10 | private List analyses; 11 | } 12 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Group.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Group { 7 | private String id; 8 | private int order; 9 | private double median; 10 | private double stddev; 11 | private String text; 12 | private String answer; 13 | } 14 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/controller/Routes.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.controller; 2 | 3 | public final class Routes { 4 | 5 | public static final String PING = "/ping"; 6 | public static final String LOGIN = "/login/{username}"; 7 | public static final String SEACRH_IDEAL_PERSON = "/search/idealPerson"; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /torreShoal/src/test/java/com/torre/shoal/TorreShoalApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class TorreShoalApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /torreShoal/build_deploy.sh: -------------------------------------------------------------------------------- 1 | export SERVICE_NAME_ENV=back 2 | export SERVICE_ROUTE_ENV=/opt/services/torreBackend/torreShoal 3 | export BRANCH_NAME_ENV=master 4 | export GIT_FETCH_ENV=false 5 | export INTERN_PORT=8081 6 | export PORT=8081 7 | export SERVER_DEPLOYMENT=production 8 | cd /opt/services/torreFront/ng-torre-front 9 | ./deploy.sh 10 | 11 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/services/LoginService.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.services; 2 | 3 | import java.util.Optional; 4 | 5 | import org.springframework.stereotype.Service; 6 | 7 | import com.torre.shoal.models.Bio; 8 | 9 | @Service 10 | public interface LoginService { 11 | 12 | public Optional loginWithTorre(String username); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /torreShoal/Dockerfile: -------------------------------------------------------------------------------- 1 | # Build stage 2 | FROM maven:3.6.0-jdk-11-slim AS build 3 | COPY src /home/app/src 4 | COPY pom.xml /home/app 5 | RUN mvn -f /home/app/pom.xml clean package 6 | 7 | FROM openjdk:11 8 | VOLUME /tmp 9 | COPY --from=build /home/app/target/torreShoal-0.0.1-SNAPSHOT.jar /usr/local/lib/torreShoal.jar 10 | ENTRYPOINT ["java","-jar","/usr/local/lib/torreShoal.jar"] 11 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Location.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Location { 7 | private String name; 8 | private String shortName; 9 | private String country; 10 | private double latitude; 11 | private double longitude; 12 | private String timezone; 13 | private int timezoneOffSet; 14 | } -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/services/SearchIdealService.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.services; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.torre.shoal.dto.RequestSearchIdealPerson; 6 | 7 | @Service 8 | public interface SearchIdealService { 9 | 10 | public Object searchIdealPerson(RequestSearchIdealPerson requestSearchIdealPerson); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Interest.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | 6 | import lombok.Data; 7 | 8 | @Data 9 | public class Interest { 10 | private String id; 11 | private int code; 12 | private String name; 13 | private List media; 14 | private Date created; 15 | private String additionalInfo; 16 | } 17 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Strength.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | 6 | import lombok.Data; 7 | 8 | @Data 9 | public class Strength { 10 | private String id; 11 | private int code; 12 | private String name; 13 | private String additionalInfo; 14 | private int weight; 15 | private int recommendations; 16 | private List media; 17 | private Date created; 18 | } 19 | -------------------------------------------------------------------------------- /torreShoal/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/constants/TorreEndpoints.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.constants; 2 | 3 | public final class TorreEndpoints { 4 | 5 | public static final String GET_BIO = "https://torre.bio/api/bios/{username}"; 6 | public static final String GET_JOB = "https://torre.co/api/opportunities/{id}"; 7 | public static final String SEARCH_JOB = "https://search.torre.co/opportunities/_search/?[offset={offset}&size={size}&aggregate={aggregate}"; 8 | public static final String SEARCH_PEOPLE = "https://search.torre.co/people/_search/"; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/TorreShoalApplication.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.web.client.RestTemplate; 7 | 8 | @SpringBootApplication 9 | public class TorreShoalApplication { 10 | 11 | @Bean 12 | public RestTemplate getRestemplate() { 13 | return new RestTemplate(); 14 | } 15 | 16 | public static void main(String[] args) { 17 | SpringApplication.run(TorreShoalApplication.class, args); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Job.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class Job { 9 | private String id; 10 | private String category; 11 | private String name; 12 | private List organizations; 13 | private List responsibilities; 14 | private String fromMonth; 15 | private String fromYear; 16 | private boolean remote; 17 | private String additionalInfo; 18 | private boolean highlighted; 19 | private double weight; 20 | private int verifications; 21 | private int recommendations; 22 | private List media; 23 | private int rank; 24 | private String toMonth; 25 | private String toYear; 26 | } -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Education.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class Education { 9 | private String id; 10 | private String category; 11 | private String name; 12 | private List organizations; 13 | private List responsibilities; 14 | private String fromMonth; 15 | private String fromYear; 16 | private String toMonth; 17 | private String toYear; 18 | private boolean remote; 19 | private String additionalInfo; 20 | private boolean highlighted; 21 | private int weight; 22 | private int verifications; 23 | private int recommendations; 24 | private List media; 25 | private int rank; 26 | } -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Flags.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Flags { 7 | private boolean benefits; 8 | private boolean canary; 9 | private boolean enlauSource; 10 | private boolean fake; 11 | private boolean featureDiscovery; 12 | private boolean firstSignalSent; 13 | private boolean signalsOnboardingCompleted; 14 | private boolean importingLinkedin; 15 | private boolean onBoarded; 16 | private boolean remoter; 17 | private boolean signalsFeatureDiscovery; 18 | private boolean importingLinkedinRecommendations; 19 | private boolean contactsImported; 20 | private boolean appContactsImported; 21 | private boolean genomeCompletionAcknowledged; 22 | } -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Experience.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class Experience { 9 | private String id; 10 | private String category; 11 | private String name; 12 | private List organizations; 13 | private List responsibilities; 14 | private String fromMonth; 15 | private String fromYear; 16 | private String toMonth; 17 | private String toYear; 18 | private boolean remote; 19 | private String additionalInfo; 20 | private boolean highlighted; 21 | private double weight; 22 | private int verifications; 23 | private int recommendations; 24 | private List media; 25 | private int rank; 26 | } 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS Files # 2 | .DS_Store 3 | 4 | # Directories # 5 | build/ 6 | bin/ 7 | target/ 8 | libs/ 9 | tmp/ 10 | node_modules/ 11 | 12 | 13 | servicio-liquibase/HELP.md 14 | servicio-liquibase/target/ 15 | servicio-liquibase/.mvn/wrapper/maven-wrapper.jar 16 | servicio-liquibase/!**/src/main/**/target/ 17 | servicio-liquibase/!**/src/test/**/target/ 18 | 19 | ### STS ### 20 | .apt_generated 21 | .classpath 22 | .factorypath 23 | .project 24 | .settings 25 | .springBeans 26 | .sts4-cache 27 | 28 | ### IntelliJ IDEA ### 29 | .idea 30 | *.iws 31 | *.iml 32 | *.ipr 33 | 34 | ### NetBeans ### 35 | /nbproject/private/ 36 | /nbbuild/ 37 | /dist/ 38 | /nbdist/ 39 | /.nb-gradle/ 40 | build/ 41 | !**/src/main/**/build/ 42 | !**/src/test/**/build/ 43 | 44 | ### VS Code ### 45 | .vscode/ 46 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Bio.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class Bio{ 9 | private Person person; 10 | private Stats stats; 11 | private List strengths; 12 | private List interests; 13 | private List experiences; 14 | private List awards; 15 | private List jobs; 16 | private List projects; 17 | private List privateations; 18 | private List education; 19 | private List opportunities; 20 | private List languages; 21 | private PersonalityTraitsResults personalityTraitsResults; 22 | private ProfessionalCultureGenomeResults professionalCultureGenomeResults; 23 | 24 | } 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/manager/SearchIdealManager.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.manager; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.stereotype.Component; 5 | 6 | import com.torre.shoal.dto.RequestSearchIdealPerson; 7 | import com.torre.shoal.services.SearchIdealService; 8 | 9 | @Component 10 | public class SearchIdealManager { 11 | 12 | private SearchIdealService searchIdealService; 13 | 14 | @Autowired 15 | public SearchIdealManager(SearchIdealService searchIdealService) { 16 | this.searchIdealService = searchIdealService; 17 | } 18 | 19 | public Object searchIdealPerson(RequestSearchIdealPerson requestSearchIdealPerson) { 20 | return this.searchIdealService.searchIdealPerson(requestSearchIdealPerson); 21 | } 22 | 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/manager/LoginManager.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.manager; 2 | 3 | import java.util.Optional; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Component; 7 | 8 | import com.torre.shoal.models.Bio; 9 | import com.torre.shoal.services.LoginService; 10 | 11 | @Component 12 | public class LoginManager { 13 | 14 | LoginService loginService; 15 | 16 | @Autowired 17 | public LoginManager(LoginService loginService) { 18 | this.loginService = loginService; 19 | } 20 | 21 | public Optional loginWithTorre(String username) { 22 | try { 23 | // TODO: save login in DB. 24 | return this.loginService.loginWithTorre(username); 25 | } catch (Exception e) { 26 | return Optional.empty(); 27 | } 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/Person.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | 6 | import lombok.Data; 7 | 8 | @Data 9 | public class Person { 10 | private String professionalHeadline; 11 | private double completion; 12 | private boolean showPhone; 13 | private Date created; 14 | private boolean verified; 15 | private Flags flags; 16 | private double weight; 17 | private String locale; 18 | private int subjectId; 19 | private String picture; 20 | private boolean hasEmail; 21 | private boolean isTest; 22 | private String name; 23 | private List links; 24 | private Location location; 25 | private String theme; 26 | private String id; 27 | private String pictureThumbnail; 28 | private boolean claimant; 29 | private String summaryOfBio; 30 | private String weightGraph; 31 | private String privateId; 32 | } -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/services/implementations/LoginServiceImplementation.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.services.implementations; 2 | 3 | import java.util.Optional; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | import org.springframework.web.client.RestTemplate; 8 | 9 | import com.torre.shoal.constants.TorreEndpoints; 10 | import com.torre.shoal.models.Bio; 11 | import com.torre.shoal.services.LoginService; 12 | 13 | @Service 14 | public class LoginServiceImplementation implements LoginService { 15 | 16 | private RestTemplate restTemplate; 17 | 18 | @Autowired 19 | public LoginServiceImplementation(RestTemplate restTemplate) { 20 | this.restTemplate = restTemplate; 21 | } 22 | 23 | @Override 24 | public Optional loginWithTorre(String username) { 25 | var response = this.restTemplate.getForObject(TorreEndpoints.GET_BIO.replace("{username}", username), Bio.class); 26 | 27 | return Optional.of(response); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/services/implementations/SearchIdealServiceImplementation.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.services.implementations; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.stereotype.Service; 5 | import org.springframework.web.client.RestTemplate; 6 | 7 | import com.torre.shoal.constants.TorreEndpoints; 8 | import com.torre.shoal.dto.RequestSearchIdealPerson; 9 | import com.torre.shoal.services.SearchIdealService; 10 | 11 | @Service 12 | public class SearchIdealServiceImplementation implements SearchIdealService { 13 | 14 | private RestTemplate restTemplate; 15 | 16 | @Autowired 17 | public SearchIdealServiceImplementation(RestTemplate restTemplate) { 18 | this.restTemplate = restTemplate; 19 | } 20 | 21 | @Override 22 | public Object searchIdealPerson(RequestSearchIdealPerson requestSearchIdealPerson) { 23 | 24 | return this.restTemplate.postForObject(TorreEndpoints.SEARCH_PEOPLE, requestSearchIdealPerson, Object.class); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/controller/Controller.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.controller; 2 | 3 | import java.util.Optional; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.GetMapping; 7 | import org.springframework.web.bind.annotation.PathVariable; 8 | import org.springframework.web.bind.annotation.PostMapping; 9 | import org.springframework.web.bind.annotation.RequestBody; 10 | import org.springframework.web.bind.annotation.RestController; 11 | 12 | import com.torre.shoal.dto.RequestSearchIdealPerson; 13 | import com.torre.shoal.manager.LoginManager; 14 | import com.torre.shoal.manager.SearchIdealManager; 15 | import com.torre.shoal.models.Bio; 16 | import com.torre.shoal.models.People; 17 | 18 | @RestController 19 | public class Controller { 20 | 21 | private LoginManager loginManager; 22 | private SearchIdealManager searchIdealManager; 23 | 24 | @Autowired 25 | public Controller(LoginManager loginManager, SearchIdealManager searchIdealManager) { 26 | this.loginManager = loginManager; 27 | this.searchIdealManager = searchIdealManager; 28 | } 29 | 30 | @GetMapping({Routes.PING}) 31 | public String ping(){ 32 | return "pong"; 33 | } 34 | 35 | @GetMapping({Routes.LOGIN}) 36 | public Optional login(@PathVariable("username") String username) { 37 | 38 | return this.loginManager.loginWithTorre(username); 39 | } 40 | 41 | @PostMapping({Routes.SEACRH_IDEAL_PERSON}) 42 | public Object searIdealPerdon(@RequestBody RequestSearchIdealPerson requestSearchIdealPerson) { 43 | 44 | return this.searchIdealManager.searchIdealPerson(requestSearchIdealPerson); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /torreShoal/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.4.5 9 | 10 | 11 | com.torre.shoal 12 | torreShoal 13 | 0.0.1-SNAPSHOT 14 | torreShoal 15 | Demo project for Spring Boot 16 | 17 | 11 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-web 23 | 24 | 25 | 26 | org.springframework.boot 27 | spring-boot-devtools 28 | runtime 29 | true 30 | 31 | 32 | org.springframework.boot 33 | spring-boot-starter-test 34 | test 35 | 36 | 37 | org.projectlombok 38 | lombok 39 | provided 40 | 41 | 42 | 43 | 44 | 45 | 46 | org.springframework.boot 47 | spring-boot-maven-plugin 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /collectionsPostman/Backend.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "e4424ea6-20c7-4742-b971-052785ec930f", 4 | "name": "Backend", 5 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" 6 | }, 7 | "item": [ 8 | { 9 | "name": "ping", 10 | "request": { 11 | "method": "GET", 12 | "header": [], 13 | "url": { 14 | "raw": "http://localhost:8081/ping", 15 | "protocol": "http", 16 | "host": [ 17 | "localhost" 18 | ], 19 | "port": "8081", 20 | "path": [ 21 | "ping" 22 | ] 23 | } 24 | }, 25 | "response": [] 26 | }, 27 | { 28 | "name": "ping Remote", 29 | "request": { 30 | "method": "GET", 31 | "header": [], 32 | "url": { 33 | "raw": "34.71.58.122:8081/ping", 34 | "host": [ 35 | "34", 36 | "71", 37 | "58", 38 | "122" 39 | ], 40 | "port": "8081", 41 | "path": [ 42 | "ping" 43 | ] 44 | } 45 | }, 46 | "response": [] 47 | }, 48 | { 49 | "name": "Login", 50 | "request": { 51 | "method": "GET", 52 | "header": [], 53 | "url": { 54 | "raw": "http://localhost:8081/login/:username", 55 | "protocol": "http", 56 | "host": [ 57 | "localhost" 58 | ], 59 | "port": "8081", 60 | "path": [ 61 | "login", 62 | ":username" 63 | ], 64 | "variable": [ 65 | { 66 | "key": "username", 67 | "value": "crissebasbol" 68 | } 69 | ] 70 | } 71 | }, 72 | "response": [] 73 | }, 74 | { 75 | "name": "Search ideal person", 76 | "request": { 77 | "method": "POST", 78 | "header": [], 79 | "body": { 80 | "mode": "raw", 81 | "raw": "{\n \"and\": [\n {\n \"skillRole\": {\n \"text\": \"kotlin\",\n \"experience\": \"1-plus-year\"\n }\n },\n {\n \"skillRole\": {\n \"text\": \"java\",\n \"experience\": \"1-plus-year\"\n }\n },\n {\n \"skillRole\": {\n \"text\": \"marketing\",\n \"experience\": \"1-plus-year\"\n }\n }\n ]\n}", 82 | "options": { 83 | "raw": { 84 | "language": "json" 85 | } 86 | } 87 | }, 88 | "url": { 89 | "raw": "http://34.71.58.122:8081/search/idealPerson", 90 | "protocol": "http", 91 | "host": [ 92 | "34", 93 | "71", 94 | "58", 95 | "122" 96 | ], 97 | "port": "8081", 98 | "path": [ 99 | "search", 100 | "idealPerson" 101 | ] 102 | } 103 | }, 104 | "response": [] 105 | } 106 | ] 107 | } -------------------------------------------------------------------------------- /log.txt: -------------------------------------------------------------------------------- 1 | [08-05-2021 7:00 pm] -> Creation Repositories frontEnd and backend 2 | [08-05-2021 8:00 pm] -> Creation Project angular 3 | [08-05-2021 9:00 pm] -> Idea planning part 1 4 | [08-05-2021 10:00 pm] -> Idea planning part 2 5 | [08-05-2021 11:00 pm] -> Creation mockups part 1 6 | [08-05-2021 12:00 am] -> Creation mockups part 2 7 | ------------------------------------------------------------------------------------ 8 | [09-05-2021] 8:00 am - 4:00 pm Familiar activities for mother's day 9 | [09-05-2021 4:00 pm] -> Creation mockups part 3 10 | [09-05-2021 5:00 pm] -> Searching template for frontend part 1 11 | [09-05-2021 6:00 pm] -> Searching template for frontend part 2 12 | [09-05-2021 7:00 pm] -> Adding template in project 13 | [09-05-2021 8:00 pm] -> Implementation libraries for template 14 | [09-05-2021 9:00 pm] -> configure index page part 1 15 | [09-05-2021 10:00 pm] -> configure index page part 2 16 | [09-05-2021 11:00 pm] -> Configure login page interface 17 | [09-05-2021 12:00 am] -> Configure posting page interface 18 | [09-05-2021 01:00 am] -> Make form for posting 19 | ------------------------------------------------------------------------------------ 20 | [10-05-2021] 7:30 am - 6:00 pm Working hours in the company 'Cumbre' 21 | [10-05-2021 7:00 pm] -> Configure Lis opportunities page part 1 22 | [10-05-2021 8:00 pm] -> Configure Lis opportunities page part 2 23 | [10-05-2021 9:00 pm] -> Creation dockerfile 24 | [10-05-2021 10:00 pm] -> Creation file for deploy in serve 25 | [10-05-2021 11:00 pm] -> Merge all branches in 'develop branch', testing and merge with 'master' 26 | [10-05-2021 12:00 am] -> Creation Spring project for backend, thinking about micro-services 27 | [10-05-2021 01:00 am] -> Creation dockerfile and file for deployment 28 | [10-05-2021 02:00 am] -> Creation server on google 29 | [10-05-2021 03:00 am] -> Add firewall rules in server 30 | [10-05-2021 04:00 am] -> Add mongo DB in the server 31 | [10-05-2021 05:00 am] -> Deploy front in server 32 | ------------------------------------------------------------------------------------ 33 | [11-05-2021] 7:30 am - 1:00 pm Working hours in the company 'Cumbre', Permission is requested to work on the test. 34 | [11-05-2021 01:00 pm] -> Add service for login with username (use of rest template for use endpoints of Torre, Lombok for creation of models) of torre part 1 35 | [11-05-2021 02:00 pm] -> Add service for login with username of torre part 2 36 | [11-05-2021 03:00 pm] -> Add service for search ideal person part 1 37 | [11-05-2021 04:00 pm] -> Add service for search ideal person part 2, merge and integration. 38 | [11-05-2021 05:00 pm] -> Update and deploy on google server. 39 | [11-05-2021 05:00 pm] -> Send test to Torre. 40 | 41 | TODO: implement services of the backend in the front, save information in the mongo db created on google server, create page for check projects, finish page for list all the projects, add services for contact with a person that posted a project. 42 | 43 | Due to work issues I could not dedicate all the time to the test, however, I tried to do my best and do it correctly, implementing good technologies and making a nice design. 44 | 45 | -------------------------------------------------------------------------------- /torreShoal/.mvn/wrapper/MavenWrapperDownloader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2007-present the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | import java.net.*; 17 | import java.io.*; 18 | import java.nio.channels.*; 19 | import java.util.Properties; 20 | 21 | public class MavenWrapperDownloader { 22 | 23 | private static final String WRAPPER_VERSION = "0.5.6"; 24 | /** 25 | * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. 26 | */ 27 | private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" 28 | + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; 29 | 30 | /** 31 | * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to 32 | * use instead of the default one. 33 | */ 34 | private static final String MAVEN_WRAPPER_PROPERTIES_PATH = 35 | ".mvn/wrapper/maven-wrapper.properties"; 36 | 37 | /** 38 | * Path where the maven-wrapper.jar will be saved to. 39 | */ 40 | private static final String MAVEN_WRAPPER_JAR_PATH = 41 | ".mvn/wrapper/maven-wrapper.jar"; 42 | 43 | /** 44 | * Name of the property which should be used to override the default download url for the wrapper. 45 | */ 46 | private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; 47 | 48 | public static void main(String args[]) { 49 | System.out.println("- Downloader started"); 50 | File baseDirectory = new File(args[0]); 51 | System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); 52 | 53 | // If the maven-wrapper.properties exists, read it and check if it contains a custom 54 | // wrapperUrl parameter. 55 | File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); 56 | String url = DEFAULT_DOWNLOAD_URL; 57 | if(mavenWrapperPropertyFile.exists()) { 58 | FileInputStream mavenWrapperPropertyFileInputStream = null; 59 | try { 60 | mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); 61 | Properties mavenWrapperProperties = new Properties(); 62 | mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); 63 | url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); 64 | } catch (IOException e) { 65 | System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); 66 | } finally { 67 | try { 68 | if(mavenWrapperPropertyFileInputStream != null) { 69 | mavenWrapperPropertyFileInputStream.close(); 70 | } 71 | } catch (IOException e) { 72 | // Ignore ... 73 | } 74 | } 75 | } 76 | System.out.println("- Downloading from: " + url); 77 | 78 | File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); 79 | if(!outputFile.getParentFile().exists()) { 80 | if(!outputFile.getParentFile().mkdirs()) { 81 | System.out.println( 82 | "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); 83 | } 84 | } 85 | System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); 86 | try { 87 | downloadFileFromURL(url, outputFile); 88 | System.out.println("Done"); 89 | System.exit(0); 90 | } catch (Throwable e) { 91 | System.out.println("- Error downloading"); 92 | e.printStackTrace(); 93 | System.exit(1); 94 | } 95 | } 96 | 97 | private static void downloadFileFromURL(String urlString, File destination) throws Exception { 98 | if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { 99 | String username = System.getenv("MVNW_USERNAME"); 100 | char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); 101 | Authenticator.setDefault(new Authenticator() { 102 | @Override 103 | protected PasswordAuthentication getPasswordAuthentication() { 104 | return new PasswordAuthentication(username, password); 105 | } 106 | }); 107 | } 108 | URL website = new URL(urlString); 109 | ReadableByteChannel rbc; 110 | rbc = Channels.newChannel(website.openStream()); 111 | FileOutputStream fos = new FileOutputStream(destination); 112 | fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); 113 | fos.close(); 114 | rbc.close(); 115 | } 116 | 117 | } 118 | -------------------------------------------------------------------------------- /torreShoal/src/main/java/com/torre/shoal/models/People.java: -------------------------------------------------------------------------------- 1 | package com.torre.shoal.models; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class People { 9 | private Aggregators aggregators; 10 | private int offset; 11 | private List results; 12 | private int size; 13 | private int total; 14 | 15 | @Data 16 | private class Aggregators { 17 | private List opento; 18 | private List remoter; 19 | private List skill; 20 | private List compensationrange; 21 | } 22 | 23 | @Data 24 | private class Opento { 25 | private int total; 26 | private String value; 27 | } 28 | 29 | @Data 30 | private class Remoter { 31 | private int total; 32 | private String value; 33 | } 34 | 35 | @Data 36 | private class Skill { 37 | private int total; 38 | private String value; 39 | } 40 | 41 | @Data 42 | private class Compensationrange { 43 | private int total; 44 | private String value; 45 | } 46 | 47 | @Data 48 | private class Result { 49 | private Context context; 50 | private Meta _meta; 51 | private Compensations compensations; 52 | private String locationName; 53 | private String name; 54 | private List openTo; 55 | private String picture; 56 | private String professionalHeadline; 57 | private boolean remoter; 58 | private List skills; 59 | private String subjectId; 60 | private String username; 61 | private boolean verified; 62 | private double weight; 63 | } 64 | 65 | @Data 66 | private class Context { 67 | private Object signaled; 68 | } 69 | 70 | @Data 71 | private class Meta { 72 | private Ranker ranker; 73 | private Filter filter; 74 | } 75 | 76 | @Data 77 | private class Skill2 { 78 | private String name; 79 | private String skillRef; 80 | private double weight; 81 | } 82 | 83 | @Data 84 | private class Experiences { 85 | private double kotlin; 86 | private List projectmanagement; 87 | private List management; 88 | private List leadership; 89 | private List teamwork; 90 | private List dataanalysis; 91 | private List machinelearning; 92 | private List flask; 93 | private List aWS; 94 | private List datascience; 95 | private List python; 96 | private List softwareDevelopment; 97 | private List communication; 98 | private List computervision; 99 | private List biomedicalMedicalengineering; 100 | private List creativity; 101 | } 102 | 103 | @Data 104 | private class Criteria { 105 | private List skills; 106 | private Experiences experiences; 107 | private String mode; 108 | private List queries; 109 | } 110 | 111 | @Data 112 | private class Projectmanagement { 113 | private String experienceRef; 114 | private String name; 115 | private double months; 116 | private String category; 117 | } 118 | 119 | @Data 120 | private class Management { 121 | private String experienceRef; 122 | private String name; 123 | private double months; 124 | private String category; 125 | } 126 | 127 | @Data 128 | private class Leadership { 129 | private String experienceRef; 130 | private String name; 131 | private double months; 132 | private String category; 133 | } 134 | 135 | @Data 136 | private class Teamwork { 137 | private String experienceRef; 138 | private String name; 139 | private double months; 140 | private String category; 141 | } 142 | 143 | @Data 144 | private class Dataanalysi { 145 | private String experienceRef; 146 | private String name; 147 | private double months; 148 | private String category; 149 | } 150 | 151 | @Data 152 | private class Machinelearning { 153 | private String experienceRef; 154 | private String name; 155 | private double months; 156 | private String category; 157 | } 158 | 159 | @Data 160 | private class Flask { 161 | private String experienceRef; 162 | private String name; 163 | private double months; 164 | private String category; 165 | } 166 | 167 | @Data 168 | private class AW { 169 | private String experienceRef; 170 | private String name; 171 | private double months; 172 | private String category; 173 | } 174 | 175 | @Data 176 | private class Datascience { 177 | private String experienceRef; 178 | private String name; 179 | private double months; 180 | private String category; 181 | } 182 | 183 | @Data 184 | private class Python { 185 | private String experienceRef; 186 | private String name; 187 | private double months; 188 | private String category; 189 | } 190 | 191 | @Data 192 | private class SoftwareDevelopment { 193 | private String experienceRef; 194 | private String name; 195 | private double months; 196 | private String category; 197 | } 198 | 199 | @Data 200 | private class Communication { 201 | private String experienceRef; 202 | private String name; 203 | private double months; 204 | private String category; 205 | } 206 | 207 | @Data 208 | private class Computervision { 209 | private String experienceRef; 210 | private String name; 211 | private double months; 212 | private String category; 213 | } 214 | 215 | @Data 216 | private class BiomedicalMedicalengineering { 217 | private String experienceRef; 218 | private String name; 219 | private double months; 220 | private String category; 221 | } 222 | 223 | @Data 224 | private class Creativity { 225 | private String experienceRef; 226 | private String name; 227 | private double months; 228 | private String category; 229 | } 230 | 231 | @Data 232 | private class Person { 233 | private List skills; 234 | private Experiences experiences; 235 | private String value; 236 | private double weight; 237 | private double completion; 238 | private double grammar; 239 | } 240 | 241 | @Data 242 | private class Input { 243 | private Criteria criteria; 244 | private Person person; 245 | } 246 | 247 | @Data 248 | private class Or { 249 | private String type; 250 | private double rank; 251 | private String scorer; 252 | private double score; 253 | private Input input; 254 | private boolean pass; 255 | private String id; 256 | } 257 | 258 | @Data 259 | private class And { 260 | private String type; 261 | private double rank; 262 | private double score; 263 | private List or; 264 | private String scorer; 265 | private Input input; 266 | } 267 | 268 | @Data 269 | private class Ranker { 270 | private String type; 271 | private double rank; 272 | private double score; 273 | private List and; 274 | } 275 | 276 | @Data 277 | private class Filter { 278 | private String type; 279 | private boolean pass; 280 | private List or; 281 | } 282 | 283 | @Data 284 | private class Compensations { 285 | } 286 | } 287 | -------------------------------------------------------------------------------- /torreShoal/mvnw.cmd: -------------------------------------------------------------------------------- 1 | @REM ---------------------------------------------------------------------------- 2 | @REM Licensed to the Apache Software Foundation (ASF) under one 3 | @REM or more contributor license agreements. See the NOTICE file 4 | @REM distributed with this work for additional information 5 | @REM regarding copyright ownership. The ASF licenses this file 6 | @REM to you under the Apache License, Version 2.0 (the 7 | @REM "License"); you may not use this file except in compliance 8 | @REM with the License. You may obtain a copy of the License at 9 | @REM 10 | @REM https://www.apache.org/licenses/LICENSE-2.0 11 | @REM 12 | @REM Unless required by applicable law or agreed to in writing, 13 | @REM software distributed under the License is distributed on an 14 | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | @REM KIND, either express or implied. See the License for the 16 | @REM specific language governing permissions and limitations 17 | @REM under the License. 18 | @REM ---------------------------------------------------------------------------- 19 | 20 | @REM ---------------------------------------------------------------------------- 21 | @REM Maven Start Up Batch script 22 | @REM 23 | @REM Required ENV vars: 24 | @REM JAVA_HOME - location of a JDK home dir 25 | @REM 26 | @REM Optional ENV vars 27 | @REM M2_HOME - location of maven2's installed home dir 28 | @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands 29 | @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending 30 | @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven 31 | @REM e.g. to debug Maven itself, use 32 | @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 33 | @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files 34 | @REM ---------------------------------------------------------------------------- 35 | 36 | @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' 37 | @echo off 38 | @REM set title of command window 39 | title %0 40 | @REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' 41 | @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% 42 | 43 | @REM set %HOME% to equivalent of $HOME 44 | if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") 45 | 46 | @REM Execute a user defined script before this one 47 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre 48 | @REM check for pre script, once with legacy .bat ending and once with .cmd ending 49 | if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" 50 | if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" 51 | :skipRcPre 52 | 53 | @setlocal 54 | 55 | set ERROR_CODE=0 56 | 57 | @REM To isolate internal variables from possible post scripts, we use another setlocal 58 | @setlocal 59 | 60 | @REM ==== START VALIDATION ==== 61 | if not "%JAVA_HOME%" == "" goto OkJHome 62 | 63 | echo. 64 | echo Error: JAVA_HOME not found in your environment. >&2 65 | echo Please set the JAVA_HOME variable in your environment to match the >&2 66 | echo location of your Java installation. >&2 67 | echo. 68 | goto error 69 | 70 | :OkJHome 71 | if exist "%JAVA_HOME%\bin\java.exe" goto init 72 | 73 | echo. 74 | echo Error: JAVA_HOME is set to an invalid directory. >&2 75 | echo JAVA_HOME = "%JAVA_HOME%" >&2 76 | echo Please set the JAVA_HOME variable in your environment to match the >&2 77 | echo location of your Java installation. >&2 78 | echo. 79 | goto error 80 | 81 | @REM ==== END VALIDATION ==== 82 | 83 | :init 84 | 85 | @REM Find the project base dir, i.e. the directory that contains the folder ".mvn". 86 | @REM Fallback to current working directory if not found. 87 | 88 | set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% 89 | IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir 90 | 91 | set EXEC_DIR=%CD% 92 | set WDIR=%EXEC_DIR% 93 | :findBaseDir 94 | IF EXIST "%WDIR%"\.mvn goto baseDirFound 95 | cd .. 96 | IF "%WDIR%"=="%CD%" goto baseDirNotFound 97 | set WDIR=%CD% 98 | goto findBaseDir 99 | 100 | :baseDirFound 101 | set MAVEN_PROJECTBASEDIR=%WDIR% 102 | cd "%EXEC_DIR%" 103 | goto endDetectBaseDir 104 | 105 | :baseDirNotFound 106 | set MAVEN_PROJECTBASEDIR=%EXEC_DIR% 107 | cd "%EXEC_DIR%" 108 | 109 | :endDetectBaseDir 110 | 111 | IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig 112 | 113 | @setlocal EnableExtensions EnableDelayedExpansion 114 | for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a 115 | @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% 116 | 117 | :endReadAdditionalConfig 118 | 119 | SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" 120 | set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" 121 | set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain 122 | 123 | set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" 124 | 125 | FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( 126 | IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 127 | ) 128 | 129 | @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central 130 | @REM This allows using the maven wrapper in projects that prohibit checking in binary data. 131 | if exist %WRAPPER_JAR% ( 132 | if "%MVNW_VERBOSE%" == "true" ( 133 | echo Found %WRAPPER_JAR% 134 | ) 135 | ) else ( 136 | if not "%MVNW_REPOURL%" == "" ( 137 | SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" 138 | ) 139 | if "%MVNW_VERBOSE%" == "true" ( 140 | echo Couldn't find %WRAPPER_JAR%, downloading it ... 141 | echo Downloading from: %DOWNLOAD_URL% 142 | ) 143 | 144 | powershell -Command "&{"^ 145 | "$webclient = new-object System.Net.WebClient;"^ 146 | "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ 147 | "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ 148 | "}"^ 149 | "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ 150 | "}" 151 | if "%MVNW_VERBOSE%" == "true" ( 152 | echo Finished downloading %WRAPPER_JAR% 153 | ) 154 | ) 155 | @REM End of extension 156 | 157 | @REM Provide a "standardized" way to retrieve the CLI args that will 158 | @REM work with both Windows and non-Windows executions. 159 | set MAVEN_CMD_LINE_ARGS=%* 160 | 161 | %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* 162 | if ERRORLEVEL 1 goto error 163 | goto end 164 | 165 | :error 166 | set ERROR_CODE=1 167 | 168 | :end 169 | @endlocal & set ERROR_CODE=%ERROR_CODE% 170 | 171 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost 172 | @REM check for post script, once with legacy .bat ending and once with .cmd ending 173 | if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" 174 | if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" 175 | :skipRcPost 176 | 177 | @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' 178 | if "%MAVEN_BATCH_PAUSE%" == "on" pause 179 | 180 | if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% 181 | 182 | exit /B %ERROR_CODE% 183 | -------------------------------------------------------------------------------- /torreShoal/mvnw: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # ---------------------------------------------------------------------------- 3 | # Licensed to the Apache Software Foundation (ASF) under one 4 | # or more contributor license agreements. See the NOTICE file 5 | # distributed with this work for additional information 6 | # regarding copyright ownership. The ASF licenses this file 7 | # to you under the Apache License, Version 2.0 (the 8 | # "License"); you may not use this file except in compliance 9 | # with the License. You may obtain a copy of the License at 10 | # 11 | # https://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, 14 | # software distributed under the License is distributed on an 15 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | # KIND, either express or implied. See the License for the 17 | # specific language governing permissions and limitations 18 | # under the License. 19 | # ---------------------------------------------------------------------------- 20 | 21 | # ---------------------------------------------------------------------------- 22 | # Maven Start Up Batch script 23 | # 24 | # Required ENV vars: 25 | # ------------------ 26 | # JAVA_HOME - location of a JDK home dir 27 | # 28 | # Optional ENV vars 29 | # ----------------- 30 | # M2_HOME - location of maven2's installed home dir 31 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven 32 | # e.g. to debug Maven itself, use 33 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 34 | # MAVEN_SKIP_RC - flag to disable loading of mavenrc files 35 | # ---------------------------------------------------------------------------- 36 | 37 | if [ -z "$MAVEN_SKIP_RC" ] ; then 38 | 39 | if [ -f /etc/mavenrc ] ; then 40 | . /etc/mavenrc 41 | fi 42 | 43 | if [ -f "$HOME/.mavenrc" ] ; then 44 | . "$HOME/.mavenrc" 45 | fi 46 | 47 | fi 48 | 49 | # OS specific support. $var _must_ be set to either true or false. 50 | cygwin=false; 51 | darwin=false; 52 | mingw=false 53 | case "`uname`" in 54 | CYGWIN*) cygwin=true ;; 55 | MINGW*) mingw=true;; 56 | Darwin*) darwin=true 57 | # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home 58 | # See https://developer.apple.com/library/mac/qa/qa1170/_index.html 59 | if [ -z "$JAVA_HOME" ]; then 60 | if [ -x "/usr/libexec/java_home" ]; then 61 | export JAVA_HOME="`/usr/libexec/java_home`" 62 | else 63 | export JAVA_HOME="/Library/Java/Home" 64 | fi 65 | fi 66 | ;; 67 | esac 68 | 69 | if [ -z "$JAVA_HOME" ] ; then 70 | if [ -r /etc/gentoo-release ] ; then 71 | JAVA_HOME=`java-config --jre-home` 72 | fi 73 | fi 74 | 75 | if [ -z "$M2_HOME" ] ; then 76 | ## resolve links - $0 may be a link to maven's home 77 | PRG="$0" 78 | 79 | # need this for relative symlinks 80 | while [ -h "$PRG" ] ; do 81 | ls=`ls -ld "$PRG"` 82 | link=`expr "$ls" : '.*-> \(.*\)$'` 83 | if expr "$link" : '/.*' > /dev/null; then 84 | PRG="$link" 85 | else 86 | PRG="`dirname "$PRG"`/$link" 87 | fi 88 | done 89 | 90 | saveddir=`pwd` 91 | 92 | M2_HOME=`dirname "$PRG"`/.. 93 | 94 | # make it fully qualified 95 | M2_HOME=`cd "$M2_HOME" && pwd` 96 | 97 | cd "$saveddir" 98 | # echo Using m2 at $M2_HOME 99 | fi 100 | 101 | # For Cygwin, ensure paths are in UNIX format before anything is touched 102 | if $cygwin ; then 103 | [ -n "$M2_HOME" ] && 104 | M2_HOME=`cygpath --unix "$M2_HOME"` 105 | [ -n "$JAVA_HOME" ] && 106 | JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 107 | [ -n "$CLASSPATH" ] && 108 | CLASSPATH=`cygpath --path --unix "$CLASSPATH"` 109 | fi 110 | 111 | # For Mingw, ensure paths are in UNIX format before anything is touched 112 | if $mingw ; then 113 | [ -n "$M2_HOME" ] && 114 | M2_HOME="`(cd "$M2_HOME"; pwd)`" 115 | [ -n "$JAVA_HOME" ] && 116 | JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" 117 | fi 118 | 119 | if [ -z "$JAVA_HOME" ]; then 120 | javaExecutable="`which javac`" 121 | if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then 122 | # readlink(1) is not available as standard on Solaris 10. 123 | readLink=`which readlink` 124 | if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then 125 | if $darwin ; then 126 | javaHome="`dirname \"$javaExecutable\"`" 127 | javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" 128 | else 129 | javaExecutable="`readlink -f \"$javaExecutable\"`" 130 | fi 131 | javaHome="`dirname \"$javaExecutable\"`" 132 | javaHome=`expr "$javaHome" : '\(.*\)/bin'` 133 | JAVA_HOME="$javaHome" 134 | export JAVA_HOME 135 | fi 136 | fi 137 | fi 138 | 139 | if [ -z "$JAVACMD" ] ; then 140 | if [ -n "$JAVA_HOME" ] ; then 141 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 142 | # IBM's JDK on AIX uses strange locations for the executables 143 | JAVACMD="$JAVA_HOME/jre/sh/java" 144 | else 145 | JAVACMD="$JAVA_HOME/bin/java" 146 | fi 147 | else 148 | JAVACMD="`which java`" 149 | fi 150 | fi 151 | 152 | if [ ! -x "$JAVACMD" ] ; then 153 | echo "Error: JAVA_HOME is not defined correctly." >&2 154 | echo " We cannot execute $JAVACMD" >&2 155 | exit 1 156 | fi 157 | 158 | if [ -z "$JAVA_HOME" ] ; then 159 | echo "Warning: JAVA_HOME environment variable is not set." 160 | fi 161 | 162 | CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher 163 | 164 | # traverses directory structure from process work directory to filesystem root 165 | # first directory with .mvn subdirectory is considered project base directory 166 | find_maven_basedir() { 167 | 168 | if [ -z "$1" ] 169 | then 170 | echo "Path not specified to find_maven_basedir" 171 | return 1 172 | fi 173 | 174 | basedir="$1" 175 | wdir="$1" 176 | while [ "$wdir" != '/' ] ; do 177 | if [ -d "$wdir"/.mvn ] ; then 178 | basedir=$wdir 179 | break 180 | fi 181 | # workaround for JBEAP-8937 (on Solaris 10/Sparc) 182 | if [ -d "${wdir}" ]; then 183 | wdir=`cd "$wdir/.."; pwd` 184 | fi 185 | # end of workaround 186 | done 187 | echo "${basedir}" 188 | } 189 | 190 | # concatenates all lines of a file 191 | concat_lines() { 192 | if [ -f "$1" ]; then 193 | echo "$(tr -s '\n' ' ' < "$1")" 194 | fi 195 | } 196 | 197 | BASE_DIR=`find_maven_basedir "$(pwd)"` 198 | if [ -z "$BASE_DIR" ]; then 199 | exit 1; 200 | fi 201 | 202 | ########################################################################################## 203 | # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central 204 | # This allows using the maven wrapper in projects that prohibit checking in binary data. 205 | ########################################################################################## 206 | if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then 207 | if [ "$MVNW_VERBOSE" = true ]; then 208 | echo "Found .mvn/wrapper/maven-wrapper.jar" 209 | fi 210 | else 211 | if [ "$MVNW_VERBOSE" = true ]; then 212 | echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." 213 | fi 214 | if [ -n "$MVNW_REPOURL" ]; then 215 | jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" 216 | else 217 | jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" 218 | fi 219 | while IFS="=" read key value; do 220 | case "$key" in (wrapperUrl) jarUrl="$value"; break ;; 221 | esac 222 | done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" 223 | if [ "$MVNW_VERBOSE" = true ]; then 224 | echo "Downloading from: $jarUrl" 225 | fi 226 | wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" 227 | if $cygwin; then 228 | wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` 229 | fi 230 | 231 | if command -v wget > /dev/null; then 232 | if [ "$MVNW_VERBOSE" = true ]; then 233 | echo "Found wget ... using wget" 234 | fi 235 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then 236 | wget "$jarUrl" -O "$wrapperJarPath" 237 | else 238 | wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" 239 | fi 240 | elif command -v curl > /dev/null; then 241 | if [ "$MVNW_VERBOSE" = true ]; then 242 | echo "Found curl ... using curl" 243 | fi 244 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then 245 | curl -o "$wrapperJarPath" "$jarUrl" -f 246 | else 247 | curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f 248 | fi 249 | 250 | else 251 | if [ "$MVNW_VERBOSE" = true ]; then 252 | echo "Falling back to using Java to download" 253 | fi 254 | javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" 255 | # For Cygwin, switch paths to Windows format before running javac 256 | if $cygwin; then 257 | javaClass=`cygpath --path --windows "$javaClass"` 258 | fi 259 | if [ -e "$javaClass" ]; then 260 | if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then 261 | if [ "$MVNW_VERBOSE" = true ]; then 262 | echo " - Compiling MavenWrapperDownloader.java ..." 263 | fi 264 | # Compiling the Java class 265 | ("$JAVA_HOME/bin/javac" "$javaClass") 266 | fi 267 | if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then 268 | # Running the downloader 269 | if [ "$MVNW_VERBOSE" = true ]; then 270 | echo " - Running MavenWrapperDownloader.java ..." 271 | fi 272 | ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") 273 | fi 274 | fi 275 | fi 276 | fi 277 | ########################################################################################## 278 | # End of extension 279 | ########################################################################################## 280 | 281 | export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} 282 | if [ "$MVNW_VERBOSE" = true ]; then 283 | echo $MAVEN_PROJECTBASEDIR 284 | fi 285 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" 286 | 287 | # For Cygwin, switch paths to Windows format before running java 288 | if $cygwin; then 289 | [ -n "$M2_HOME" ] && 290 | M2_HOME=`cygpath --path --windows "$M2_HOME"` 291 | [ -n "$JAVA_HOME" ] && 292 | JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` 293 | [ -n "$CLASSPATH" ] && 294 | CLASSPATH=`cygpath --path --windows "$CLASSPATH"` 295 | [ -n "$MAVEN_PROJECTBASEDIR" ] && 296 | MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` 297 | fi 298 | 299 | # Provide a "standardized" way to retrieve the CLI args that will 300 | # work with both Windows and non-Windows executions. 301 | MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" 302 | export MAVEN_CMD_LINE_ARGS 303 | 304 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain 305 | 306 | exec "$JAVACMD" \ 307 | $MAVEN_OPTS \ 308 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ 309 | "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ 310 | ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" 311 | --------------------------------------------------------------------------------