SiteDefinitionDomainMapper.class
1    //
2    // Source code recreated from a .class file by IntelliJ IDEA
3    // (powered by Fernflower decompiler)
4    //
5    
6    package info.magnolia.connector.siteimprove.mapper;
7    
8    import info.magnolia.module.site.Domain;
9    import info.magnolia.module.site.Site;
10   import info.magnolia.module.site.SiteManager;
11   import java.util.Optional;
12   import javax.inject.Inject;
13   import javax.jcr.Node;
14   import javax.jcr.RepositoryException;
15   import org.apache.commons.collections4.CollectionUtils;
16   import org.apache.commons.lang3.StringUtils;
17   import org.slf4j.Logger;
18   import org.slf4j.LoggerFactory;
19   
20   public class SiteDefinitionDomainMapper implements SiteImproveMapper {
21       private static final Logger LOG = LoggerFactory.getLogger(SiteDefinitionDomainMapper.class);
22       private final SiteManager siteManager;
23   
24       @Inject
25       public SiteDefinitionDomainMapper(SiteManager siteManager) {
26           this.siteManager = siteManager;
27       }
28   
29       public Optional<String> getUrl(Node currentPage) throws RepositoryException {
30           String url = null;
31           Site currentSite = this.siteManager.getAssignedSite(currentPage);
32           if (currentSite != null && CollectionUtils.isNotEmpty(currentSite.getDomains())) {
33               StringBuilder urlBuffer = new StringBuilder();
34               urlBuffer.append(this.buildDomainUrl((Domain)currentSite.getDomains().iterator().next()));
35               if (!"/".equals(currentPage.getParent().getPath())) {
36                   urlBuffer.append(currentPage.getPath());
37               }
38   
39               url = urlBuffer.toString();
40               LOG.debug("SiteImprove: request data for {}", url);
41           } else {
42               LOG.warn("SiteImprove: request data for {}", url);
43           }
44   
45           return Optional.ofNullable(url);
46       }
47   
48       protected String buildDomainUrl(Domain domain) {
49           StringBuilder url = new StringBuilder();
50           if (StringUtils.isNotEmpty(domain.getProtocol())) {
51               url.append(domain.getProtocol());
52           } else {
53               url.append("http");
54           }
55   
56           url.append("://");
57           url.append(domain.getName());
58           if (domain.getPort() != 80) {
59               url.append(":").append(domain.getPort());
60           }
61   
62           if (StringUtils.isNotEmpty(domain.getContext())) {
63               if (!domain.getContext().startsWith("/")) {
64                   url.append("/");
65               }
66   
67               url.append(domain.getContext());
68           }
69   
70           return url.toString();
71       }
72   
73       protected String getRelativePath(Node node) throws RepositoryException {
74           String path = "";
75           if (!"/".equals(node.getParent().getPath())) {
76               String nodePath = node.getPath();
77               int secondSlash = nodePath.indexOf(47, 1);
78               path = nodePath.substring(secondSlash);
79           }
80   
81           return path;
82       }
83   }
84