diff --git a/README.md b/README.md index 036e90ee..799ffe51 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ In order to reduce the life-cycle to develop UI backend testing, you can do the A quick and dirty solution to share changes in the UI is to manually compile the dist. This will make the loader file available without the need to publish: -`cp -r wisemapping-frontend/packages/mindplot/dist/* wisemapping-open-source/wise-ui/target/wisemapping-mindplot/package/dist` +`yarn --cwd wisemapping-frontend build;cp -r wisemapping-frontend/packages/mindplot/dist/* wisemapping-open-source/wise-ui/target/wisemapping-mindplot/package/dist;cp -r wisemapping-frontend/packages/mindplot/dist/* wisemapping-open-source/wise-ui/target/wisemapping-mindplot/package/dist` ### Compiling and running with docker-compose diff --git a/pom.xml b/pom.xml index 3d273c7f..3deb0a34 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd"> - 5.0.9 + 5.0.10-SNAPSHOT ${project.basedir}/wise-webapps @@ -16,7 +16,7 @@ org.wisemapping wisemapping WiseMapping Project - 5.0.9 + 5.0.10-SNAPSHOT pom diff --git a/wise-ui/pom.xml b/wise-ui/pom.xml index 971c1096..63876504 100644 --- a/wise-ui/pom.xml +++ b/wise-ui/pom.xml @@ -12,7 +12,7 @@ org.wisemapping wisemapping ../pom.xml - 5.0.9 + 5.0.10-SNAPSHOT diff --git a/wise-webapp/pom.xml b/wise-webapp/pom.xml index 781a26e7..5e0c0f0a 100644 --- a/wise-webapp/pom.xml +++ b/wise-webapp/pom.xml @@ -9,7 +9,7 @@ org.wisemapping wisemapping ../pom.xml - 5.0.9 + 5.0.10-SNAPSHOT diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/LabelManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/dao/LabelManagerImpl.java index e241b043..b9bd4f64 100644 --- a/wise-webapp/src/main/java/com/wisemapping/dao/LabelManagerImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/dao/LabelManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManager.java b/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManager.java index f82c0de5..abb9fa20 100644 --- a/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManager.java +++ b/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManager.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java index ec083353..42683d26 100644 --- a/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/UserManager.java b/wise-webapp/src/main/java/com/wisemapping/dao/UserManager.java index cd351ff5..8ca7056a 100644 --- a/wise-webapp/src/main/java/com/wisemapping/dao/UserManager.java +++ b/wise-webapp/src/main/java/com/wisemapping/dao/UserManager.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java index 4dba546c..3e5f9893 100644 --- a/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/AccessDeniedSecurityException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/AccessDeniedSecurityException.java index 33e02186..b6bdef87 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/AccessDeniedSecurityException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/AccessDeniedSecurityException.java @@ -1,33 +1,37 @@ /* -* Copyright [2015] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.exceptions; +import com.wisemapping.model.Collaborator; +import com.wisemapping.model.User; import org.jetbrains.annotations.NotNull; public class AccessDeniedSecurityException - extends ClientException -{ + extends ClientException { public static final String MSG_KEY = "ACCESS_HAS_BEEN_REVOKED"; - public AccessDeniedSecurityException(@NotNull String msg) - { - super(msg,Severity.FATAL); + public AccessDeniedSecurityException(@NotNull String msg) { + super(msg, Severity.FATAL); + } + + public AccessDeniedSecurityException(@NotNull long mapId, Collaborator user) { + super("No enough permissions to access map. Id: " + mapId + ", User: " + user, Severity.FATAL); } @NotNull diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/ClientException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/ClientException.java index 96fbe962..694db093 100644 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/ClientException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/ClientException.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.exceptions; import org.jetbrains.annotations.NotNull; diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/EditionSessionExpiredException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/EditionSessionExpiredException.java index e22ed8dc..eda00256 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/EditionSessionExpiredException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/EditionSessionExpiredException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/EmailNotExistsException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/EmailNotExistsException.java index bca586c3..3baefb95 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/EmailNotExistsException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/EmailNotExistsException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/InvalidEmailException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/InvalidEmailException.java new file mode 100755 index 00000000..92739682 --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/InvalidEmailException.java @@ -0,0 +1,39 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.wisemapping.exceptions; + + +import org.springframework.lang.Nullable; + +import javax.validation.constraints.NotNull; + +public class InvalidEmailException + extends ClientException { + private static final String EMAIL_IS_INVALID = "INVALID_EMAIL_ADDRESS"; + + public InvalidEmailException(@NotNull String emails) { + super("Invalid email exception:" + emails, Severity.WARNING); + } + + @NotNull + @Override + protected String getMsgBundleKey() { + return EMAIL_IS_INVALID; + } +} diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/InvalidMindmapException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/InvalidMindmapException.java index 43fb75d1..59dcc5e9 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/InvalidMindmapException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/InvalidMindmapException.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/LabelCouldNotFoundException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/LabelCouldNotFoundException.java index 5be448b9..fc4cc38b 100644 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/LabelCouldNotFoundException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/LabelCouldNotFoundException.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.exceptions; import org.jetbrains.annotations.NotNull; diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/LockException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/LockException.java index f95d93dc..31f2c07f 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/LockException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/LockException.java @@ -1,32 +1,39 @@ /* -* Copyright [2015] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.exceptions; +import com.wisemapping.model.Mindmap; +import com.wisemapping.model.User; +import com.wisemapping.service.LockManager; import org.jetbrains.annotations.NotNull; public class LockException - extends ClientException -{ + extends ClientException { private static final String MSG_KEY = "MINDMAP_IS_LOCKED"; + public LockException(@NotNull String message) { - super(message,Severity.INFO); + super(message, Severity.INFO); + } + + public static LockException createLockLost(@NotNull Mindmap mindmap, @NotNull User user, @NotNull LockManager manager) { + return new LockException("Lock can not be granted to " + user.getEmail() + ". The lock is assigned to " + manager.getLockInfo(mindmap)); } @NotNull diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/MapCouldNotFoundException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/MapCouldNotFoundException.java index 4c6e33b9..ee8a641e 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/MapCouldNotFoundException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/MapCouldNotFoundException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/MapNonPublicException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/MapNonPublicException.java index 9bbb9e72..93a6b6ec 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/MapNonPublicException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/MapNonPublicException.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/MultipleSessionsOpenException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/MultipleSessionsOpenException.java index 58d7fe6d..e3915da8 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/MultipleSessionsOpenException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/MultipleSessionsOpenException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/SessionExpiredException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/SessionExpiredException.java index 995e4b50..6d34d39f 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/SessionExpiredException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/SessionExpiredException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/Severity.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/Severity.java index 4ddd6276..5bf99bcc 100644 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/Severity.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/Severity.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/WiseMappingException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/WiseMappingException.java index ac36df50..9c1cc00e 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/WiseMappingException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/WiseMappingException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/filter/RequestPropertiesInterceptor.java b/wise-webapp/src/main/java/com/wisemapping/filter/RequestPropertiesInterceptor.java index 0c28736c..b3b02b47 100644 --- a/wise-webapp/src/main/java/com/wisemapping/filter/RequestPropertiesInterceptor.java +++ b/wise-webapp/src/main/java/com/wisemapping/filter/RequestPropertiesInterceptor.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the @@ -48,7 +48,7 @@ public class RequestPropertiesInterceptor implements HandlerInterceptor { @Value("${site.homepage}") private String siteHomepage; - @Value("${site.baseurl}") + @Value("${site.baseurl:http://localhost:8080}") private String siteUrl; @Value("${security.type}") diff --git a/wise-webapp/src/main/java/com/wisemapping/filter/SupportedUserAgent.java b/wise-webapp/src/main/java/com/wisemapping/filter/SupportedUserAgent.java index 9a7bc216..13919387 100644 --- a/wise-webapp/src/main/java/com/wisemapping/filter/SupportedUserAgent.java +++ b/wise-webapp/src/main/java/com/wisemapping/filter/SupportedUserAgent.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/filter/UserLocaleInterceptor.java b/wise-webapp/src/main/java/com/wisemapping/filter/UserLocaleInterceptor.java index 88cef60c..dfcaa888 100644 --- a/wise-webapp/src/main/java/com/wisemapping/filter/UserLocaleInterceptor.java +++ b/wise-webapp/src/main/java/com/wisemapping/filter/UserLocaleInterceptor.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/listener/UnlockOnExpireListener.java b/wise-webapp/src/main/java/com/wisemapping/listener/UnlockOnExpireListener.java index 6fd5edcf..f49eeab1 100644 --- a/wise-webapp/src/main/java/com/wisemapping/listener/UnlockOnExpireListener.java +++ b/wise-webapp/src/main/java/com/wisemapping/listener/UnlockOnExpireListener.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.listener; @@ -7,6 +24,7 @@ import com.wisemapping.model.User; import com.wisemapping.security.Utils; import com.wisemapping.service.LockManager; import com.wisemapping.service.MindmapService; +import org.apache.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -16,6 +34,7 @@ import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class UnlockOnExpireListener implements HttpSessionListener { + private static final Logger logger = Logger.getLogger(UnlockOnExpireListener.class); @Override public void sessionCreated(@NotNull HttpSessionEvent event) { @@ -28,16 +47,16 @@ public class UnlockOnExpireListener implements HttpSessionListener { final ServletContext servletContext = event.getSession().getServletContext(); final WebApplicationContext wc = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); final MindmapService mindmapService = (MindmapService) wc.getBean("mindmapService"); - final LockManager lockManager = mindmapService.getLockManager(); + final LockManager lockManager = mindmapService.getLockManager(); final User user = Utils.getUser(false); if (user != null) { - try { - lockManager.unlockAll(user); - } catch (LockException e) { - e.printStackTrace(); - } catch (AccessDeniedSecurityException e) { - e.printStackTrace(); + synchronized (mindmapService.getLockManager()) { + try { + lockManager.unlockAll(user); + } catch (LockException | AccessDeniedSecurityException e) { + logger.error(e); + } } } } diff --git a/wise-webapp/src/main/java/com/wisemapping/mail/Mailer.java b/wise-webapp/src/main/java/com/wisemapping/mail/Mailer.java index 348da0ca..2c7e9133 100644 --- a/wise-webapp/src/main/java/com/wisemapping/mail/Mailer.java +++ b/wise-webapp/src/main/java/com/wisemapping/mail/Mailer.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/mail/NotificationService.java b/wise-webapp/src/main/java/com/wisemapping/mail/NotificationService.java index ea86ee65..9845b901 100644 --- a/wise-webapp/src/main/java/com/wisemapping/mail/NotificationService.java +++ b/wise-webapp/src/main/java/com/wisemapping/mail/NotificationService.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the @@ -23,38 +23,35 @@ import com.wisemapping.model.Collaboration; import com.wisemapping.model.Mindmap; import com.wisemapping.model.User; import com.wisemapping.rest.model.RestLogItem; -import com.wisemapping.util.VelocityEngineUtils; -import com.wisemapping.util.VelocityEngineWrapper; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringEscapeUtils; import org.apache.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.context.support.ResourceBundleMessageSource; import javax.servlet.http.HttpServletRequest; +import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.stream.Collectors; final public class NotificationService { final private static Logger logger = Logger.getLogger(Mailer.class); - final private static String DEFAULT_WISE_URL = "http://localhost:8080/wisemapping"; - private VelocityEngineWrapper velocityEngineWrapper; + private ResourceBundleMessageSource messageSource; @Autowired private Mailer mailer; private String baseUrl; - public NotificationService() { - NotifierFilter notificationFilter = new NotifierFilter(); - } - public void newCollaboration(@NotNull Collaboration collaboration, @NotNull Mindmap mindmap, @NotNull User user, @Nullable String message) { + final Locale locale = LocaleContextHolder.getLocale(); try { // Sent collaboration email ... @@ -64,12 +61,11 @@ final public class NotificationService { final String collabEmail = collaboration.getCollaborator().getEmail(); // Build the subject ... - final String subject = "[WiseMapping] " + user.getFullName() + " has shared a mindmap with you"; + final String subject = messageSource.getMessage("SHARE_MAP.EMAIL_SUBJECT", new Object[]{user.getFullName()}, locale); // Fill template properties ... final Map model = new HashMap<>(); model.put("mindmap", mindmap); - model.put("message", "message"); model.put("ownerName", user.getFirstname()); model.put("mapEditUrl", getBaseUrl() + "/c/maps/" + mindmap.getId() + "/edit"); model.put("baseUrl", getBaseUrl()); @@ -85,31 +81,32 @@ final public class NotificationService { } public void resetPassword(@NotNull User user, @NotNull String temporalPassword) { - final String mailSubject = "[WiseMapping] Your new password"; - final String messageTitle = "Your new password has been generated"; - final String messageBody = - "

Someone, most likely you, requested a new password for your WiseMapping account.

\n" + - "

Here is your new password: " + temporalPassword + "

\n" + - "

You can login clicking here. We strongly encourage you to change the password as soon as possible.

"; + final Locale locale = LocaleContextHolder.getLocale(); + + final String mailSubject = messageSource.getMessage("CHANGE_PASSWORD.EMAIL_SUBJECT", null, locale); + final String messageTitle = messageSource.getMessage("CHANGE_PASSWORD.EMAIL_TITLE", null, locale); + final String messageBody = messageSource.getMessage("CHANGE_PASSWORD.EMAIL_BODY", new Object[]{temporalPassword, getBaseUrl()}, locale); sendTemplateMail(user, mailSubject, messageTitle, messageBody); } public void passwordChanged(@NotNull User user) { - final String mailSubject = "[WiseMapping] Your password has been changed"; - final String messageTitle = "Your password has been changed successfully"; - final String messageBody = - "

This is only an notification that your password has been changed. No further action is required.

"; + final Locale locale = LocaleContextHolder.getLocale(); + + final String mailSubject = messageSource.getMessage("PASSWORD_CHANGED.EMAIL_SUBJECT", null, locale); + final String messageTitle = messageSource.getMessage("PASSWORD_CHANGED.EMAIL_TITLE", null, locale); + final String messageBody = messageSource.getMessage("PASSWORD_CHANGED.EMAIL_BODY", null, locale); sendTemplateMail(user, mailSubject, messageTitle, messageBody); } public void newAccountCreated(@NotNull User user) { - final String mailSubject = "Welcome to WiseMapping !"; - final String messageTitle = "Your account has been created successfully"; - final String messageBody = - "

Thank you for your interest in WiseMapping. Click here to start creating and sharing new mind maps. If have any feedback or idea, send us an email to feedback@wisemapping.com .We'd love to hear from you.

"; + final Locale locale = LocaleContextHolder.getLocale(); + + final String mailSubject = messageSource.getMessage("REGISTRATION.EMAIL_SUBJECT", null, locale); + final String messageTitle = messageSource.getMessage("REGISTRATION.EMAIL_TITLE", null, locale); + final String messageBody = messageSource.getMessage("REGISTRATION.EMAIL_BODY", null, locale); sendTemplateMail(user, mailSubject, messageTitle, messageBody); } @@ -123,6 +120,7 @@ final public class NotificationService { model.put("baseUrl", getBaseUrl()); model.put("supportEmail", mailer.getSupportEmail()); + logger.debug("Email properties->" + model); mailer.sendEmail(mailer.getServerSenderEmail(), user.getEmail(), mailSubject, model, "baseLayout.vm"); } catch (Exception e) { handleException(e); @@ -160,10 +158,6 @@ final public class NotificationService { // } } - public void setVelocityEngineWrapper(VelocityEngineWrapper engine) { - this.velocityEngineWrapper = engine; - } - public void reportJavascriptException(@Nullable Mindmap mindmap, @Nullable User user, @NotNull RestLogItem errorItem, @NotNull HttpServletRequest request) { final Map summary = new HashMap<>(); @@ -210,32 +204,30 @@ final public class NotificationService { } public String stackTraceToString(@NotNull Throwable e) { - String retValue; - StringWriter sw = null; - PrintWriter pw = null; - try { - sw = new StringWriter(); - pw = new PrintWriter(sw); + String retValue = ""; + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + try (sw; pw) { e.printStackTrace(pw); retValue = sw.toString(); - } finally { - IOUtils.closeQuietly(pw); - IOUtils.closeQuietly(sw); + } catch (IOException ioException) { + ioException.printStackTrace(); } return retValue; } public String getBaseUrl() { - if ("${site.baseurl}".equals(baseUrl)) { - baseUrl = DEFAULT_WISE_URL; - System.err.println("Warning: site.baseurl has not being configured. Mail site references could be not properly sent. Using :" + baseUrl); - } return baseUrl; } public void setBaseUrl(String baseUrl) { this.baseUrl = baseUrl; } + + public void setMessageSource(ResourceBundleMessageSource messageSource) { + this.messageSource = messageSource; + } + } diff --git a/wise-webapp/src/main/java/com/wisemapping/mail/NotifierFilter.java b/wise-webapp/src/main/java/com/wisemapping/mail/NotifierFilter.java index 626d5774..52803f93 100644 --- a/wise-webapp/src/main/java/com/wisemapping/mail/NotifierFilter.java +++ b/wise-webapp/src/main/java/com/wisemapping/mail/NotifierFilter.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.mail; import org.jetbrains.annotations.NotNull; diff --git a/wise-webapp/src/main/java/com/wisemapping/mail/NotifyingExceptionResolver.java b/wise-webapp/src/main/java/com/wisemapping/mail/NotifyingExceptionResolver.java deleted file mode 100644 index cecf9c86..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/mail/NotifyingExceptionResolver.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.wisemapping.mail; - -import com.wisemapping.model.User; -import com.wisemapping.security.Utils; -import org.apache.log4j.Logger; -import org.jetbrains.annotations.NotNull; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.HashSet; -import java.util.Set; - -public class NotifyingExceptionResolver extends SimpleMappingExceptionResolver { - - final private Logger logger = Logger.getLogger(NotifyingExceptionResolver.class); - private Set exclude = new HashSet(); - private NotificationService notificationService; - - @Override - protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { - if (!exclude.contains(ex.getClass().getName())) { - logger.error("An Exception has occurred in the application", ex); - sendNotification(ex, request); - } - - return super.doResolveException(request, response, handler, ex); - } - - private void sendNotification(@NotNull Exception ex, @NotNull HttpServletRequest request) { - final User user = Utils.getUser(false); - notificationService.reportJavaException(ex, user, request); - } - - public void setExclude(final Set exclude) { - this.exclude = exclude; - } - - public void setNotificationService(NotificationService notificationService) { - this.notificationService = notificationService; - } -} diff --git a/wise-webapp/src/main/java/com/wisemapping/model/AccessAuditory.java b/wise-webapp/src/main/java/com/wisemapping/model/AccessAuditory.java index 7df24301..9b021285 100755 --- a/wise-webapp/src/main/java/com/wisemapping/model/AccessAuditory.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/AccessAuditory.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/AuthenticationType.java b/wise-webapp/src/main/java/com/wisemapping/model/AuthenticationType.java index f0bf0ace..92b7725e 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/AuthenticationType.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/AuthenticationType.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.model; diff --git a/wise-webapp/src/main/java/com/wisemapping/model/Collaboration.java b/wise-webapp/src/main/java/com/wisemapping/model/Collaboration.java index 81c690b9..8f766e25 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/Collaboration.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/Collaboration.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/CollaborationEmail.java b/wise-webapp/src/main/java/com/wisemapping/model/CollaborationEmail.java index 7d84009e..bfabe950 100755 --- a/wise-webapp/src/main/java/com/wisemapping/model/CollaborationEmail.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/CollaborationEmail.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/CollaborationProperties.java b/wise-webapp/src/main/java/com/wisemapping/model/CollaborationProperties.java index a71c58eb..4c0fea46 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/CollaborationProperties.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/CollaborationProperties.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/CollaborationRole.java b/wise-webapp/src/main/java/com/wisemapping/model/CollaborationRole.java index 8b2c35e3..35e304c2 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/CollaborationRole.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/CollaborationRole.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/Collaborator.java b/wise-webapp/src/main/java/com/wisemapping/model/Collaborator.java index de3a28f6..d9af2e99 100755 --- a/wise-webapp/src/main/java/com/wisemapping/model/Collaborator.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/Collaborator.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/Constants.java b/wise-webapp/src/main/java/com/wisemapping/model/Constants.java index ec2b3321..7e95c46a 100755 --- a/wise-webapp/src/main/java/com/wisemapping/model/Constants.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/Constants.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/Label.java b/wise-webapp/src/main/java/com/wisemapping/model/Label.java index 4dd4fbd6..95e80415 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/Label.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/Label.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.model; diff --git a/wise-webapp/src/main/java/com/wisemapping/model/MindMapCriteria.java b/wise-webapp/src/main/java/com/wisemapping/model/MindMapCriteria.java index a77a57f1..05f88d7f 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/MindMapCriteria.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/MindMapCriteria.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/MindMapHistory.java b/wise-webapp/src/main/java/com/wisemapping/model/MindMapHistory.java index 3b218764..5ef3c1c5 100755 --- a/wise-webapp/src/main/java/com/wisemapping/model/MindMapHistory.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/MindMapHistory.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/Mindmap.java b/wise-webapp/src/main/java/com/wisemapping/model/Mindmap.java index 5179cd61..bf413899 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/Mindmap.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/Mindmap.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/model/MindmapUtils.java b/wise-webapp/src/main/java/com/wisemapping/model/MindmapUtils.java index 9a519d4e..5607ea22 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/MindmapUtils.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/MindmapUtils.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.model; @@ -19,10 +36,16 @@ abstract public class MindmapUtils { throw InvalidMindmapException.invalidFormat(xmlDoc); } - // Validate that the number of nodes is not bigger 500 nodes. int numberOfTopics = xmlDoc.split(" MAX_SUPPORTED_NODES) { throw InvalidMindmapException.tooBigMindnap(numberOfTopics); } + } } diff --git a/wise-webapp/src/main/java/com/wisemapping/model/User.java b/wise-webapp/src/main/java/com/wisemapping/model/User.java index 9ef2d86c..663c6a00 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/User.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/User.java @@ -1,20 +1,20 @@ /* -* Copyright [2015] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.model; @@ -29,7 +29,7 @@ import java.util.Set; @Entity @Table(name = "USER") -@PrimaryKeyJoinColumn(name="colaborator_id") +@PrimaryKeyJoinColumn(name = "colaborator_id") public class User extends Collaborator implements Serializable { @@ -48,10 +48,10 @@ public class User @Column(name = "allow_send_email") private boolean allowSendEmail = false; - @Column(name="authentication_type") + @Column(name = "authentication_type") private Character authenticationTypeCode = AuthenticationType.DATABASE.getCode(); - @Column(name="authenticator_uri") + @Column(name = "authenticator_uri") private String authenticatorUri; @ElementCollection @@ -93,6 +93,7 @@ public class User public String getPassword() { return password; } + public void setPassword(String password) { this.password = password; } @@ -143,14 +144,14 @@ public class User } public AuthenticationType getAuthenticationType() { - return authenticationTypeCode!=null ? AuthenticationType.valueOf(authenticationTypeCode):AuthenticationType.DATABASE; + return authenticationTypeCode != null ? AuthenticationType.valueOf(authenticationTypeCode) : AuthenticationType.DATABASE; } public void setAuthenticationType(@NotNull AuthenticationType authenticationType) { this.authenticationTypeCode = authenticationType.getCode(); } - public boolean isDatabaseSchema(){ + public boolean isDatabaseSchema() { return this.getAuthenticationType() == AuthenticationType.DATABASE; } @@ -162,5 +163,11 @@ public class User this.authenticatorUri = authenticatorUri; } - + @Override + public String toString() { + return "User{" + + "firstname='" + firstname + '\'' + + ", lastname='" + lastname + '\'' + + "', email = '" + this.getEmail() + "}"; + } } diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java b/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java index 1cb040be..b56605b4 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the @@ -124,15 +124,4 @@ public class AccountController extends BaseController { } userService.removeUser(user); } - - - @RequestMapping(method = RequestMethod.POST, value = "/logger/editor", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"}) - @ResponseStatus(value = HttpStatus.NO_CONTENT) - public void logError(@RequestBody RestLogItem item, @NotNull HttpServletRequest request) { - final Mindmap mindmap = mindmapService.findMindmapById(item.getMapId()); - final User user = Utils.getUser(); - - notificationService.reportJavascriptException(mindmap, user, item, request); - } - } diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java b/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java index e1b3c1d5..c8e8deb2 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the @@ -138,17 +138,4 @@ public class AdminController extends BaseController { userService.removeUser(user); } - - private boolean isWelcomeMap(@NotNull Mindmap mindmap) throws UnsupportedEncodingException { - // Is welcome map ? - final String xmlStr = mindmap.getXmlStr(); - boolean oldWelcomeMap = xmlStr.contains("Welcome to WiseMapping") && xmlStr.contains("My Wisemaps"); - return oldWelcomeMap; - } - - public boolean isSimpleMap(@NotNull Mindmap mindmap) throws UnsupportedEncodingException { - String xmlStr = mindmap.getXmlStr(); - String[] topics = xmlStr.split(Pattern.quote(" timestamp; - - if (lockInfo.getSession() == session) { - // Timestamp might not be returned to the client. This try to cover this case, ignoring the client timestamp check. - final User lastEditor = mindmap.getLastEditor(); - boolean editedBySameUser = lastEditor == null || user.identityEquality(lastEditor); - if (outdated && !editedBySameUser) { - throw new SessionExpiredException("Map has been updated by " + (lastEditor.getEmail()) + ",Timestamp:" + timestamp + "," + savedTimestamp + ", User:" + lastEditor.getId() + ":" + user.getId() + ",Mail:'" + lastEditor.getEmail() + "':'" + user.getEmail(), lastEditor); - } - } else if (outdated) { - logger.warn("Sessions:" + session + ":" + lockInfo.getSession() + ",Timestamp: " + timestamp + ": " + savedTimestamp); - // @Todo: Temporally disabled to unblock save action. More research needed. -// throw new MultipleSessionsOpenException("Sessions:" + session + ":" + lockInfo.getSession() + ",Timestamp: " + timestamp + ": " + savedTimestamp); - } - } else { - throw new SessionExpiredException("Different Users.", lockInfo.getUser()); - } - } /** * The intention of this method is the update of several properties at once ... @@ -249,8 +208,15 @@ public class MindmapController extends BaseController { } @NotNull - private Mindmap findMindmapById(int id) throws MapCouldNotFoundException { - Mindmap result = mindmapService.findMindmapById(id); + private Mindmap findMindmapById(int id) throws MapCouldNotFoundException, AccessDeniedSecurityException { + // Has enough permissions ? + final User user = Utils.getUser(); + if (!mindmapService.hasPermissions(user, id, CollaborationRole.VIEWER)) { + throw new AccessDeniedSecurityException(id, user); + } + + // Does the map exists ? + final Mindmap result = mindmapService.findMindmapById(id); if (result == null) { throw new MapCouldNotFoundException("Map could not be found. Id:" + id); } @@ -277,7 +243,7 @@ public class MindmapController extends BaseController { @RequestMapping(method = RequestMethod.POST, value = "/maps/{id}/collabs/", consumes = {"application/json", "application/xml"}, produces = {"application/json", "application/xml"}) @ResponseStatus(value = HttpStatus.NO_CONTENT) - public void updateCollabs(@PathVariable int id, @NotNull @RequestBody RestCollaborationList restCollabs) throws CollaborationException, MapCouldNotFoundException { + public void updateCollabs(@PathVariable int id, @NotNull @RequestBody RestCollaborationList restCollabs) throws CollaborationException, MapCouldNotFoundException, AccessDeniedSecurityException, InvalidEmailException { final Mindmap mindMap = findMindmapById(id); // Only owner can change collaborators... @@ -293,7 +259,7 @@ public class MindmapController extends BaseController { // Is a valid email address ? if (!EmailValidator.getInstance().isValid(email)) { - throw new IllegalArgumentException(email + " is not valid email address"); + throw new InvalidEmailException(email); } final Collaboration collaboration = mindMap.findCollaboration(email); @@ -303,7 +269,7 @@ public class MindmapController extends BaseController { throw new IllegalArgumentException(roleStr + " is not a valid role"); } - // Remove from the list of pendings to remove ... + // Remove from the list of pending to remove ... if (collaboration != null) { collabsToRemove.remove(collaboration); } @@ -324,25 +290,26 @@ public class MindmapController extends BaseController { @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/collabs/", consumes = {"application/json", "application/xml"}, produces = {"application/json", "application/xml"}) @ResponseStatus(value = HttpStatus.NO_CONTENT) - public void addCollab(@PathVariable int id, @NotNull @RequestBody RestCollaborationList restCollabs) throws CollaborationException, MapCouldNotFoundException { + public void addCollab(@PathVariable int id, @NotNull @RequestBody RestCollaborationList restCollabs) throws CollaborationException, MapCouldNotFoundException, AccessDeniedSecurityException, InvalidEmailException { final Mindmap mindMap = findMindmapById(id); // Only owner can change collaborators... final User user = Utils.getUser(); if (!mindMap.hasPermissions(user, CollaborationRole.OWNER)) { - throw new IllegalArgumentException("No enough permissions"); + throw new AccessDeniedSecurityException("User must be owner to share mindmap"); } // Is valid email address ? final EmailValidator emailValidator = EmailValidator.getInstance(); - restCollabs + final Set invalidEmails = restCollabs .getCollaborations() - .forEach(collab -> { - // Is a valid email address ? - if (!emailValidator.isValid(collab.getEmail())) { - throw new IllegalArgumentException(collab.getEmail() + " is not valid email address"); - } - }); + .stream() + .map(RestCollaboration::getEmail) + .filter(e -> !emailValidator.isValid(e)).collect(Collectors.toSet()); + + if (!invalidEmails.isEmpty()) { + throw new InvalidEmailException(String.join(", ", invalidEmails)); + } // Has any role changed ?. Just removed it. final Map mapsByEmail = mindMap @@ -385,7 +352,7 @@ public class MindmapController extends BaseController { @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}/collabs", produces = {"application/json", "application/xml"}) - public RestCollaborationList retrieveList(@PathVariable int id) throws MapCouldNotFoundException { + public RestCollaborationList retrieveList(@PathVariable int id) throws MapCouldNotFoundException, AccessDeniedSecurityException { final Mindmap mindMap = findMindmapById(id); final Set collaborations = mindMap.getCollaborations(); @@ -403,14 +370,9 @@ public class MindmapController extends BaseController { @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/description", consumes = {"text/plain"}, produces = {"application/json", "application/xml"}) @ResponseStatus(value = HttpStatus.NO_CONTENT) public void updateDescription(@RequestBody String description, @PathVariable int id) throws WiseMappingException { - - final Mindmap mindMap = findMindmapById(id); - final User user = Utils.getUser(); - - // Update map ... final Mindmap mindmap = findMindmapById(id); mindmap.setDescription(description); - mindmapService.updateMindmap(mindMap, false); + mindmapService.updateMindmap(mindmap, false); } @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/publish", consumes = {"text/plain"}, produces = {"application/json", "application/xml"}) @@ -446,7 +408,7 @@ public class MindmapController extends BaseController { // Is a valid email address ? final EmailValidator emailValidator = EmailValidator.getInstance(); if (!emailValidator.isValid(email)) { - throw new IllegalArgumentException(email + " is not valid email address"); + throw new InvalidEmailException(email); } final Mindmap mindmap = findMindmapById(id); @@ -487,21 +449,6 @@ public class MindmapController extends BaseController { mindmapService.updateCollaboration(user, collaboration.get()); } - @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/lock", consumes = {"text/plain"}, produces = {"application/json", "application/xml"}) - @ResponseStatus(value = HttpStatus.NO_CONTENT) - public void updateMapLock(@RequestBody String value, @PathVariable int id) throws IOException, WiseMappingException { - final User user = Utils.getUser(); - final LockManager lockManager = mindmapService.getLockManager(); - final Mindmap mindmap = findMindmapById(id); - - final boolean lock = Boolean.parseBoolean(value); - if (!lock) { - lockManager.unlock(mindmap, user); - } else { - throw new UnsupportedOperationException("REST lock must be implemented."); - } - } - @RequestMapping(method = RequestMethod.DELETE, value = "/maps/batch") @ResponseStatus(value = HttpStatus.NO_CONTENT) public void batchDelete(@RequestParam() String ids) throws IOException, WiseMappingException { @@ -618,4 +565,21 @@ public class MindmapController extends BaseController { mindmap.addLabel(label); mindmapService.updateMindmap(mindmap, false); } + + @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/lock", consumes = {"text/plain"}, produces = {"application/json", "application/xml"}) + public ResponseEntity lockMindmap(@RequestBody String value, @PathVariable int id) throws WiseMappingException { + final User user = Utils.getUser(); + final LockManager lockManager = mindmapService.getLockManager(); + final Mindmap mindmap = findMindmapById(id); + + ResponseEntity result = new ResponseEntity<>(null, HttpStatus.NO_CONTENT); + if (Boolean.parseBoolean(value)) { + final LockInfo lockInfo = lockManager.lock(mindmap, user); + final RestLockInfo restLockInfo = new RestLockInfo(lockInfo, user); + result = new ResponseEntity<>(restLockInfo, HttpStatus.OK); + } else { + lockManager.unlock(mindmap, user); + } + return result; + } } diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapFilter.java b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapFilter.java index 6842a80a..964b6969 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapFilter.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapFilter.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/TransformerController.java b/wise-webapp/src/main/java/com/wisemapping/rest/TransformerController.java index cc21b4f2..62d4b2c5 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/TransformerController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/TransformerController.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/UserController.java b/wise-webapp/src/main/java/com/wisemapping/rest/UserController.java index 3f69e152..76dbe9f5 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/UserController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/UserController.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/ValidationException.java b/wise-webapp/src/main/java/com/wisemapping/rest/ValidationException.java index d638e83c..a3962513 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/ValidationException.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/ValidationException.java @@ -1,20 +1,20 @@ /* -* Copyright [2015] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.rest; @@ -23,11 +23,11 @@ import com.wisemapping.exceptions.WiseMappingException; import org.jetbrains.annotations.NotNull; import org.springframework.validation.Errors; -public class ValidationException extends WiseMappingException{ +public class ValidationException extends WiseMappingException { private final Errors errors; public ValidationException(@NotNull Errors errors) { - super("Validation Exceptions:"+errors); + super("Validation Exceptions:" + errors); this.errors = errors; } diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaboration.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaboration.java index 56e3d8f9..8abbc2d7 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaboration.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaboration.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaborationList.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaborationList.java index d8923980..37b26d47 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaborationList.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaborationList.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaborator.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaborator.java index 53bad2cc..ec876ce1 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaborator.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestCollaborator.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestErrors.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestErrors.java index caac5cb1..e156b63c 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestErrors.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestErrors.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLockInfo.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLockInfo.java index 2e6d570e..7da4b783 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLockInfo.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLockInfo.java @@ -1,20 +1,20 @@ /* -* Copyright [2015] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.rest.model; @@ -22,6 +22,7 @@ package com.wisemapping.rest.model; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.wisemapping.model.Collaborator; +import com.wisemapping.model.User; import com.wisemapping.service.LockInfo; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -39,48 +40,24 @@ import javax.xml.bind.annotation.XmlRootElement; @JsonIgnoreProperties(ignoreUnknown = true) public class RestLockInfo { - @NotNull - final private Collaborator user; - - @Nullable - final private LockInfo lockInfo; + private String email; // This is required only for compliance with the JAXB serializer. - public RestLockInfo(){ + public RestLockInfo() { - this.lockInfo = null; - //noinspection ConstantConditions - this.user = null; } - public RestLockInfo(@Nullable LockInfo lockInfo, @NotNull Collaborator collaborator) { - - this.lockInfo = lockInfo; - this.user = collaborator; + public RestLockInfo(@Nullable LockInfo lockInfo, @NotNull User user) { + this.email = user.getEmail(); } - public boolean isLocked() { - return lockInfo != null; + + public String getEmail() { + return email; } - public void setLocked(boolean locked) { - // Ignore ... + public void setEmail(String email) { + this.email = email; } - - public boolean isLockedByMe() { - return isLocked() && lockInfo != null && lockInfo.getUser().identityEquality(user); - } - - public void setLockedByMe(boolean lockedForMe) { - // Ignore ... - } - - public long getTimestamp() { - return lockInfo != null ? lockInfo.getTimestamp() : -1; - } - - public void setTimestamp(long value) { - // - } - } + diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLogItem.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLogItem.java index 6a352d9a..5894962c 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLogItem.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestLogItem.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmap.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmap.java index fcc176c2..98a74342 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmap.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmap.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapHistory.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapHistory.java index 3f799bb4..cd464824 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapHistory.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapHistory.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapHistoryList.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapHistoryList.java index df557bfd..cfb9e3b6 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapHistoryList.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapHistoryList.java @@ -1,5 +1,5 @@ /** -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java index 53315291..fc13611b 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapList.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapList.java index ef5f9460..f3b5179f 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapList.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapList.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUser.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUser.java index 4b1a3d5b..8cf64298 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUser.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUser.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUserRegistration.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUserRegistration.java index 2099053d..9a9bc750 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUserRegistration.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUserRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/security/AuthenticationProvider.java b/wise-webapp/src/main/java/com/wisemapping/security/AuthenticationProvider.java index 078fffea..a4240d07 100644 --- a/wise-webapp/src/main/java/com/wisemapping/security/AuthenticationProvider.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/AuthenticationProvider.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/security/AuthenticationSuccessHandler.java b/wise-webapp/src/main/java/com/wisemapping/security/AuthenticationSuccessHandler.java index e0a29963..923eefca 100644 --- a/wise-webapp/src/main/java/com/wisemapping/security/AuthenticationSuccessHandler.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/AuthenticationSuccessHandler.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.security; import org.springframework.security.core.Authentication; diff --git a/wise-webapp/src/main/java/com/wisemapping/security/CSFRRequestMatcher.java b/wise-webapp/src/main/java/com/wisemapping/security/CSFRRequestMatcher.java index dff0596a..4f3421eb 100644 --- a/wise-webapp/src/main/java/com/wisemapping/security/CSFRRequestMatcher.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/CSFRRequestMatcher.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.security; import org.springframework.security.web.util.matcher.RequestMatcher; diff --git a/wise-webapp/src/main/java/com/wisemapping/security/DefaultPasswordEncoderFactories.java b/wise-webapp/src/main/java/com/wisemapping/security/DefaultPasswordEncoderFactories.java index 9395a177..5d9d2b2e 100644 --- a/wise-webapp/src/main/java/com/wisemapping/security/DefaultPasswordEncoderFactories.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/DefaultPasswordEncoderFactories.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.security; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; diff --git a/wise-webapp/src/main/java/com/wisemapping/security/LegacyPasswordEncoder.java b/wise-webapp/src/main/java/com/wisemapping/security/LegacyPasswordEncoder.java index 4008037c..eb89d119 100755 --- a/wise-webapp/src/main/java/com/wisemapping/security/LegacyPasswordEncoder.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/LegacyPasswordEncoder.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/security/UserDetails.java b/wise-webapp/src/main/java/com/wisemapping/security/UserDetails.java index 76939026..8f4b2d38 100644 --- a/wise-webapp/src/main/java/com/wisemapping/security/UserDetails.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/UserDetails.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/security/UserDetailsService.java b/wise-webapp/src/main/java/com/wisemapping/security/UserDetailsService.java index c66aaa10..a400294a 100644 --- a/wise-webapp/src/main/java/com/wisemapping/security/UserDetailsService.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/UserDetailsService.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/security/Utils.java b/wise-webapp/src/main/java/com/wisemapping/security/Utils.java index e2c208d8..f5c68587 100644 --- a/wise-webapp/src/main/java/com/wisemapping/security/Utils.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/Utils.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/security/aop/BaseSecurityAdvice.java b/wise-webapp/src/main/java/com/wisemapping/security/aop/BaseSecurityAdvice.java index f34fdf89..fce46766 100755 --- a/wise-webapp/src/main/java/com/wisemapping/security/aop/BaseSecurityAdvice.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/aop/BaseSecurityAdvice.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/security/aop/UpdateSecurityAdvise.java b/wise-webapp/src/main/java/com/wisemapping/security/aop/UpdateSecurityAdvise.java index d98428b4..f2103225 100755 --- a/wise-webapp/src/main/java/com/wisemapping/security/aop/UpdateSecurityAdvise.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/aop/UpdateSecurityAdvise.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/security/aop/ViewBaseSecurityAdvise.java b/wise-webapp/src/main/java/com/wisemapping/security/aop/ViewBaseSecurityAdvise.java index 4a62da23..52c59944 100755 --- a/wise-webapp/src/main/java/com/wisemapping/security/aop/ViewBaseSecurityAdvise.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/aop/ViewBaseSecurityAdvise.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/CollaborationException.java b/wise-webapp/src/main/java/com/wisemapping/service/CollaborationException.java index 56b29327..357eb3dc 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/CollaborationException.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/CollaborationException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/HibernateAppListener.java b/wise-webapp/src/main/java/com/wisemapping/service/HibernateAppListener.java index f0d61506..06aa1455 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/HibernateAppListener.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/HibernateAppListener.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the @@ -23,7 +23,6 @@ import javax.servlet.ServletContextListener; public class HibernateAppListener implements ServletContextListener { - /* Application Startup Event */ public void contextInitialized(ServletContextEvent ce) { try { diff --git a/wise-webapp/src/main/java/com/wisemapping/service/HibernateUtil.java b/wise-webapp/src/main/java/com/wisemapping/service/HibernateUtil.java index fb7e395e..600b3305 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/HibernateUtil.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/HibernateUtil.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/InvalidActivationCodeException.java b/wise-webapp/src/main/java/com/wisemapping/service/InvalidActivationCodeException.java index 723aef92..122691aa 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/InvalidActivationCodeException.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/InvalidActivationCodeException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/InvalidAuthSchemaException.java b/wise-webapp/src/main/java/com/wisemapping/service/InvalidAuthSchemaException.java index 5acd30a7..8b80868f 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/InvalidAuthSchemaException.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/InvalidAuthSchemaException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/InvalidUserEmailException.java b/wise-webapp/src/main/java/com/wisemapping/service/InvalidUserEmailException.java index 539d8cf1..4723c41f 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/InvalidUserEmailException.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/InvalidUserEmailException.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/LabelService.java b/wise-webapp/src/main/java/com/wisemapping/service/LabelService.java index d5dbcfc8..e2ea8ec2 100644 --- a/wise-webapp/src/main/java/com/wisemapping/service/LabelService.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/LabelService.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.service; import com.wisemapping.exceptions.WiseMappingException; diff --git a/wise-webapp/src/main/java/com/wisemapping/service/LabelServiceImpl.java b/wise-webapp/src/main/java/com/wisemapping/service/LabelServiceImpl.java index 9aaf29bd..8217dc1b 100644 --- a/wise-webapp/src/main/java/com/wisemapping/service/LabelServiceImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/LabelServiceImpl.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.service; import com.wisemapping.dao.LabelManager; diff --git a/wise-webapp/src/main/java/com/wisemapping/service/LockInfo.java b/wise-webapp/src/main/java/com/wisemapping/service/LockInfo.java index cf211ceb..f8771053 100644 --- a/wise-webapp/src/main/java/com/wisemapping/service/LockInfo.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/LockInfo.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the @@ -27,16 +27,22 @@ import java.util.Calendar; public class LockInfo { final private User user; private Calendar timeout; - private long session; private static final int EXPIRATION_MIN = 30; - private long timestamp = -1; - private long previousTimestamp; - public LockInfo(@NotNull User user, @NotNull Mindmap mindmap, long session) { + public int getMapId() { + return mapId; + } + + public void setMapId(int mapId) { + this.mapId = mapId; + } + + private int mapId; + + public LockInfo(@NotNull User user, @NotNull Mindmap mindmap) { this.user = user; + this.mapId = mindmap.getId(); this.updateTimeout(); - this.updateTimestamp(mindmap); - this.session = session; } public User getUser() { @@ -54,24 +60,12 @@ public class LockInfo { } - public long getSession() { - return session; - } - - public void setSession(long session) { - this.session = session; - } - - public long getTimestamp() { - return timestamp; - } - - public long getPreviousTimestamp() { - return previousTimestamp; - } - - public void updateTimestamp(@NotNull Mindmap mindmap) { - this.previousTimestamp = this.timestamp; - this.timestamp = mindmap.getLastModificationTime().getTimeInMillis(); + @Override + public String toString() { + return "LockInfo{" + + "user=" + user + + ", timeout=" + timeout + + ", mapId=" + mapId + + '}'; } } diff --git a/wise-webapp/src/main/java/com/wisemapping/service/LockManager.java b/wise-webapp/src/main/java/com/wisemapping/service/LockManager.java index 33ae24b1..05ae6fbb 100644 --- a/wise-webapp/src/main/java/com/wisemapping/service/LockManager.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/LockManager.java @@ -1,26 +1,26 @@ /* -* Copyright [2015] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.service; import com.wisemapping.exceptions.AccessDeniedSecurityException; import com.wisemapping.exceptions.LockException; -import com.wisemapping.exceptions.WiseMappingException; +import com.wisemapping.exceptions.SessionExpiredException; import com.wisemapping.model.Mindmap; import com.wisemapping.model.User; import org.jetbrains.annotations.NotNull; @@ -30,16 +30,14 @@ public interface LockManager { LockInfo getLockInfo(@NotNull Mindmap mindmap); - LockInfo updateExpirationTimeout(@NotNull Mindmap mindmap, @NotNull User user); - void unlock(@NotNull Mindmap mindmap, @NotNull User user) throws LockException, AccessDeniedSecurityException; void unlockAll(@NotNull User user) throws LockException, AccessDeniedSecurityException; - boolean isLockedBy(@NotNull Mindmap mindmap, @NotNull User collaborator); - - @NotNull - LockInfo lock(@NotNull Mindmap mindmap, @NotNull User user, long session) throws WiseMappingException; + boolean isLockedBy(@NotNull Mindmap mindmap, @NotNull User user); long generateSession(); + + @NotNull + LockInfo lock(@NotNull Mindmap mindmap, @NotNull User user) throws LockException; } diff --git a/wise-webapp/src/main/java/com/wisemapping/service/LockManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/service/LockManagerImpl.java index 6f703484..b7247559 100644 --- a/wise-webapp/src/main/java/com/wisemapping/service/LockManagerImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/LockManagerImpl.java @@ -1,55 +1,39 @@ /* -* Copyright [2015] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.service; import com.wisemapping.exceptions.AccessDeniedSecurityException; import com.wisemapping.exceptions.LockException; -import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.model.CollaborationRole; import com.wisemapping.model.Mindmap; import com.wisemapping.model.User; import org.apache.log4j.Logger; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.ConcurrentHashMap; -/* -* Refresh page should not lost the lock. -* En caso que no sea posible grabar por que se perdio el lock, usar mensaje de error para explicar el por que... -* Mensaje modal explicando que el mapa esta siendo editado, por eso no es posible edilarlo.... -* Internacionalizacion de los mensaje ... -* Logout limpiar las sessiones ... -* -* Casos: -* - Usuario pierde el lock: -* - Y grabo con la misma sessions y el timestap ok. -* - Y grabo con la misma session y el timestap esta mal - * - Y grabo con distinta sessions - * - -* - Usuario pierde el lock, pero intenta grabar camio -*/ - class LockManagerImpl implements LockManager { - public static final int ONE_MINUTE_MILLISECONDS = 1000 * 60; - final Map lockInfoByMapId; - final static Timer expirationTimer = new Timer(); + private static final int ONE_MINUTE_MILLISECONDS = 1000 * 60; + private final Map lockInfoByMapId; + private final static Timer expirationTimer = new Timer(); final private static Logger logger = Logger.getLogger(LockManagerImpl.class); @Override @@ -62,23 +46,6 @@ class LockManagerImpl implements LockManager { return lockInfoByMapId.get(mindmap.getId()); } - @Override - public LockInfo updateExpirationTimeout(@NotNull Mindmap mindmap, @NotNull User user) { - if (!this.isLocked(mindmap)) { - throw new IllegalStateException("Lock lost for map. No update possible."); - } - - final LockInfo result = this.getLockInfo(mindmap); - if (!result.getUser().identityEquality(user)) { - throw new IllegalStateException("Could not update map lock timeout if you are not the locking user. User:" + result.getUser() + ", " + user); - } - - result.updateTimeout(); - result.updateTimestamp(mindmap); - logger.debug("Timeout updated for:" + mindmap.getId()); - return result; - } - @Override public void unlockAll(@NotNull final User user) throws LockException, AccessDeniedSecurityException { final Set mapIds = lockInfoByMapId.keySet(); @@ -92,14 +59,7 @@ class LockManagerImpl implements LockManager { @Override public void unlock(@NotNull Mindmap mindmap, @NotNull User user) throws LockException, AccessDeniedSecurityException { - if (isLocked(mindmap) && !isLockedBy(mindmap, user)) { - throw new LockException("Lock can be only revoked by the locker."); - } - - if (!mindmap.hasPermissions(user, CollaborationRole.EDITOR)) { - throw new AccessDeniedSecurityException("Invalid lock, this should not happen"); - } - + verifyHasLock(mindmap, user); this.unlock(mindmap.getId()); } @@ -124,53 +84,57 @@ class LockManagerImpl implements LockManager { return System.nanoTime(); } - @Override @NotNull - public LockInfo lock(@NotNull Mindmap mindmap, @NotNull User user, long session) throws WiseMappingException { + @Override + public LockInfo lock(@NotNull Mindmap mindmap, @NotNull User user) throws LockException { if (isLocked(mindmap) && !isLockedBy(mindmap, user)) { - throw new LockException("Invalid lock, this should not happen"); - } - - if (!mindmap.hasPermissions(user, CollaborationRole.EDITOR)) { - throw new AccessDeniedSecurityException("Invalid lock, this should not happen"); + throw LockException.createLockLost(mindmap, user, this); } + // Do I need to create a new lock ? LockInfo result = lockInfoByMapId.get(mindmap.getId()); - if (result != null) { - // Update timeout only... - logger.debug("Update timestamp:" + mindmap.getId()); - updateExpirationTimeout(mindmap, user); - // result.setSession(session); - } else { - logger.debug("Lock map id:" + mindmap.getId()); - result = new LockInfo(user, mindmap, session); + if (result == null) { + logger.debug("Creating new lock for map id:" + mindmap.getId()); + result = new LockInfo(user, mindmap); lockInfoByMapId.put(mindmap.getId(), result); } + + // Update timestamp ... + logger.debug("Updating timeout:" + result); + result.updateTimeout(); + return result; } + private void verifyHasLock(@NotNull Mindmap mindmap, @NotNull User user) throws LockException, AccessDeniedSecurityException { + // Only editor can have lock ... + if (!mindmap.hasPermissions(user, CollaborationRole.EDITOR)) { + throw new AccessDeniedSecurityException(mindmap.getId(), user); + } + + // Is the lock assigned to the user ... + if (isLocked(mindmap) && !isLockedBy(mindmap, user)) { + throw LockException.createLockLost(mindmap, user, this); + } + } + public LockManagerImpl() { - lockInfoByMapId = new ConcurrentHashMap(); + lockInfoByMapId = new ConcurrentHashMap<>(); expirationTimer.schedule(new TimerTask() { @Override public void run() { - logger.debug("Lock expiration scheduler started. Current locks:" + lockInfoByMapId.keySet()); - - final List toRemove = new ArrayList(); - final Set mapIds = lockInfoByMapId.keySet(); - for (Integer mapId : mapIds) { - final LockInfo lockInfo = lockInfoByMapId.get(mapId); - if (lockInfo.isExpired()) { - toRemove.add(mapId); - } + synchronized (this) { + logger.debug("Lock expiration scheduler started. Current locks:" + lockInfoByMapId.keySet()); + // Search for expired sessions and remove them .... + lockInfoByMapId. + keySet(). + stream(). + filter(mapId -> lockInfoByMapId.get(mapId).isExpired()). + forEach(mapId -> unlock(mapId)); } - for (Integer mapId : toRemove) { - unlock(mapId); - } } }, ONE_MINUTE_MILLISECONDS, ONE_MINUTE_MILLISECONDS); } - } diff --git a/wise-webapp/src/main/java/com/wisemapping/service/MindmapService.java b/wise-webapp/src/main/java/com/wisemapping/service/MindmapService.java index eebf329a..16b44a57 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/MindmapService.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/MindmapService.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/MindmapServiceImpl.java b/wise-webapp/src/main/java/com/wisemapping/service/MindmapServiceImpl.java index e9d7e865..115cca8c 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/MindmapServiceImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/MindmapServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/RecaptchaService.java b/wise-webapp/src/main/java/com/wisemapping/service/RecaptchaService.java index 91ba8406..2064734d 100644 --- a/wise-webapp/src/main/java/com/wisemapping/service/RecaptchaService.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/RecaptchaService.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.service; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/wise-webapp/src/main/java/com/wisemapping/service/RegistrationException.java b/wise-webapp/src/main/java/com/wisemapping/service/RegistrationException.java index 56592944..ef3b2e63 100644 --- a/wise-webapp/src/main/java/com/wisemapping/service/RegistrationException.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/RegistrationException.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.service; import org.springframework.validation.BindException; diff --git a/wise-webapp/src/main/java/com/wisemapping/service/UserService.java b/wise-webapp/src/main/java/com/wisemapping/service/UserService.java index 3e9d61ae..ef0cf222 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/UserService.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/UserService.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java b/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java index 188e0f1b..07866c1e 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/util/Application.java b/wise-webapp/src/main/java/com/wisemapping/util/Application.java deleted file mode 100644 index 9d100f64..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/Application.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) 2008, Harald Walker (bitwalker.nl) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the - * following conditions are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * * Neither the name of bitwalker nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package com.wisemapping.util; - -/** - * Enum constants for internet applications like web-application and rich - * internet application. - * - * @author harald - * - */ - -public enum Application { - - HOTMAIL(Manufacturer.MICROSOFT, 1, "Windows Live Hotmail", - new String[] { "mail.live.com", "hotmail.msn" }, ApplicationType.WEBMAIL), - GMAIL( Manufacturer.GOOGLE, 5, "Gmail", - new String[] { "mail.google.com" }, ApplicationType.WEBMAIL), - YAHOO_MAIL( Manufacturer.YAHOO, 10, "Yahoo Mail", - new String[] { "mail.yahoo.com" }, ApplicationType.WEBMAIL), - COMPUSERVE( Manufacturer.COMPUSERVE, 20, "Compuserve", - new String[] { "csmail.compuserve.com" }, ApplicationType.WEBMAIL), - AOL_WEBMAIL( Manufacturer.AOL, 30, "AOL webmail", - new String[] { "webmail.aol.com" }, ApplicationType.WEBMAIL), - /** - * MobileMe webmail client by Apple. Previously known as .mac. - */ - MOBILEME( Manufacturer.APPLE, 40, "MobileMe", - new String[] { "www.me.com" }, ApplicationType.WEBMAIL), - /** - * Mail.com - * Mail.com provides consumers with web-based e-mail services - */ - MAIL_COM( Manufacturer.MMC, 50, "Mail.com", - new String[] { ".mail.com" }, ApplicationType.WEBMAIL), - /** - * Popular open source webmail client. Often installed by providers or privately. - */ - HORDE( Manufacturer.OTHER, 50, "horde", - new String[] { "horde" }, ApplicationType.WEBMAIL), - OTHER_WEBMAIL(Manufacturer.OTHER, 60, "Other webmail client", - new String[] { "webmail", "webemail" }, ApplicationType.WEBMAIL), - UNKNOWN(Manufacturer.OTHER, 0, "Unknown", - new String[0], ApplicationType.UNKNOWN); - - private final short id; - private final String name; - private final String[] aliases; - private final ApplicationType applicationType; - private final Manufacturer manufacturer; - - Application(Manufacturer manufacturer, int versionId, String name, - String[] aliases, ApplicationType applicationType) { - this.id = (short) ((manufacturer.getId() << 8) + (byte) versionId); - this.name = name; - this.aliases = aliases; - this.applicationType = applicationType; - this.manufacturer = manufacturer; - } - - public short getId() { - return id; - } - - public String getName() { - return name; - } - - /** - * @return the applicationType - */ - public ApplicationType getApplicationType() { - return applicationType; - } - - /** - * @return the manufacturer - */ - public Manufacturer getManufacturer() { - return manufacturer; - } - - /* - * Checks if the given referrer string matches to the application. Only - * checks for one specific application. - */ - public boolean isInReferrerString(String referrerString) { - for (String alias : aliases) { - if (referrerString.toLowerCase().indexOf(alias.toLowerCase()) != -1) - return true; - } - return false; - } - - /* - * Iterates over all Application to compare the signature with the referrer - * string. If no match can be found Application.UNKNOWN will be returned. - */ - public static Application parseReferrerString(String referrerString) { - // skip the empty and "-" referrer - if (referrerString != null && referrerString.length() > 1) { - for (Application applicationInList : Application.values()) { - if (applicationInList.isInReferrerString(referrerString)) - return applicationInList; - } - } - return Application.UNKNOWN; - } - - /** - * Returns the enum constant of this type with the specified id. Throws - * IllegalArgumentException if the value does not exist. - * - * @param id - * @return - */ - public static Application valueOf(short id) { - for (Application application : Application.values()) { - if (application.getId() == id) - return application; - } - - // same behavior as standard valueOf(string) method - throw new IllegalArgumentException("No enum const for id " + id); - } - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/ApplicationType.java b/wise-webapp/src/main/java/com/wisemapping/util/ApplicationType.java deleted file mode 100644 index e02a1734..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/ApplicationType.java +++ /dev/null @@ -1,63 +0,0 @@ -/* -* Copyright (c) 2008, Harald Walker (bitwalker.nl) -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or -* without modification, are permitted provided that the -* following conditions are met: -* -* * Redistributions of source code must retain the above -* copyright notice, this list of conditions and the following -* disclaimer. -* -* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -package com.wisemapping.util; - -/** - * Enum constants classifying the different types of applications which are common in referrer strings - * @author harald - * - */ -public enum ApplicationType { - - /** - * Webmail service like Windows Live Hotmail and Gmail. - */ - WEBMAIL("Webmail client"), - UNKNOWN("unknown"); - - private final String name; - - ApplicationType(String name) { - this.name = name; - } - - public String getName() { - return name; - } - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/Browser.java b/wise-webapp/src/main/java/com/wisemapping/util/Browser.java deleted file mode 100644 index 82a5d775..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/Browser.java +++ /dev/null @@ -1,351 +0,0 @@ -/* -* Copyright (c) 2011, Harald Walker (bitwalker.nl) -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or -* without modification, are permitted provided that the -* following conditions are met: -* -* * Redistributions of source code must retain the above -* copyright notice, this list of conditions and the following -* disclaimer. -* -* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -package com.wisemapping.util; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Enum constants for most common browsers, including e-mail clients and bots. - * - * @author harald - */ - -public enum Browser { - - OPERA(Manufacturer.OPERA, null, 1, "Opera", new String[]{"Opera"}, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, "Opera\\/(([\\d]+)\\.([\\w]+))"), // before MSIE - OPERA_MINI(Manufacturer.OPERA, Browser.OPERA, 20, "Opera Mini", new String[]{"Opera Mini"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.PRESTO, null), // Opera for mobile devices - /** - * For some strange reason Opera uses 9.80 in the user-agent string. - */ - OPERA10(Manufacturer.OPERA, Browser.OPERA, 10, "Opera 10", new String[]{"Opera/9.8"}, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, "Version\\/(([\\d]+)\\.([\\w]+))"), - OPERA9(Manufacturer.OPERA, Browser.OPERA, 5, "Opera 9", new String[]{"Opera/9"}, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, null), - KONQUEROR(Manufacturer.OTHER, null, 1, "Konqueror", new String[]{"Konqueror"}, null, BrowserType.WEB_BROWSER, RenderingEngine.KHTML, "Konqueror\\/(([0-9]+)\\.?([\\w]+)?(-[\\w]+)?)"), - - /** - * Outlook email client - */ - OUTLOOK(Manufacturer.MICROSOFT, null, 100, "Outlook", new String[]{"MSOffice"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.WORD, "MSOffice (([0-9]+))"), // before IE7 - /** - * Microsoft Outlook 2007 identifies itself as MSIE7 but uses the html rendering engine of Word 2007. - * Example user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; MSOffice 12) - */ - OUTLOOK2007(Manufacturer.MICROSOFT, Browser.OUTLOOK, 107, "Outlook 2007", new String[]{"MSOffice 12"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.WORD, null), // before IE7 - /** - * Outlook 2010 is still using the rendering engine of Word. http://www.fixoutlook.org - */ - OUTLOOK2010(Manufacturer.MICROSOFT, Browser.OUTLOOK, 108, "Outlook 2010", new String[]{"MSOffice 14"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.WORD, null), // before IE7 - - /** - * Family of Internet Explorer browsers - */ - IE11(Manufacturer.MICROSOFT, null, 1, "Internet Explorer", new String[]{") like Gecko"}, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, "Mozilla/5.0 (([\\d]+)\\.([\\w]+))"), // before Mozilla - - /** - * Family of Internet Explorer browsers - */ - IE(Manufacturer.MICROSOFT, null, 1, "Internet Explorer", new String[]{"MSIE"}, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, "MSIE (([\\d]+)\\.([\\w]+))"), // before Mozilla - /** - * Since version 7 Outlook Express is identifying itself. By detecting Outlook Express we can not - * identify the Internet Explorer version which is probably used for the rendering. - * Obviously this product is now called Windows Live Mail Desktop or just Windows Live Mail. - */ - OUTLOOK_EXPRESS7(Manufacturer.MICROSOFT, Browser.IE, 110, "Windows Live Mail", new String[]{"Outlook-Express/7.0"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.TRIDENT, null), // before IE7, previously known as Outlook Express. First released in 2006, offered with different name later - /** - * Since 2007 the mobile edition of Internet Explorer identifies itself as IEMobile in the user-agent. - * If previous versions have to be detected, use the operating system information as well. - */ - IEMOBILE7(Manufacturer.MICROSOFT, Browser.IE, 121, "IE Mobile 7", new String[]{"IEMobile 7"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE strings - IEMOBILE6(Manufacturer.MICROSOFT, Browser.IE, 120, "IE Mobile 6", new String[]{"IEMobile 6"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE - IE9(Manufacturer.MICROSOFT, Browser.IE, 90, "Internet Explorer 9", new String[]{"MSIE 9"}, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE - IE8(Manufacturer.MICROSOFT, Browser.IE, 80, "Internet Explorer 8", new String[]{"MSIE 8"}, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE - IE7(Manufacturer.MICROSOFT, Browser.IE, 70, "Internet Explorer 7", new String[]{"MSIE 7"}, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE - IE6(Manufacturer.MICROSOFT, Browser.IE, 60, "Internet Explorer 6", new String[]{"MSIE 6"}, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE - IE5_5(Manufacturer.MICROSOFT, Browser.IE, 55, "Internet Explorer 5.5", new String[]{"MSIE 5.5"}, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE - IE5(Manufacturer.MICROSOFT, Browser.IE, 50, "Internet Explorer 5", new String[]{"MSIE 5"}, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE - - /** - * Google Chrome browser - */ - CHROME(Manufacturer.GOOGLE, null, 1, "Chrome", new String[]{"Chrome"}, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "Chrome\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), // before Mozilla - CHROME10(Manufacturer.GOOGLE, Browser.CHROME, 15, "Chrome 10", new String[]{"Chrome/10"}, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // before Mozilla - CHROME9(Manufacturer.GOOGLE, Browser.CHROME, 10, "Chrome 9", new String[]{"Chrome/9"}, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // before Mozilla - CHROME8(Manufacturer.GOOGLE, Browser.CHROME, 5, "Chrome 8", new String[]{"Chrome/8"}, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // before Mozilla - - OMNIWEB(Manufacturer.OTHER, null, 2, "Omniweb", new String[]{"OmniWeb"}, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // - - SAFARI(Manufacturer.APPLE, null, 1, "Safari", new String[]{"Safari"}, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "Version\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?)"), // before AppleWebKit - SAFARI5(Manufacturer.APPLE, Browser.SAFARI, 3, "Safari 5", new String[]{"Version/5"}, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // before AppleWebKit - MOBILE_SAFARI(Manufacturer.APPLE, Browser.SAFARI, 2, "Mobile Safari", new String[]{"Mobile Safari", "Mobile/"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, null), // before Safari - SAFARI4(Manufacturer.APPLE, Browser.SAFARI, 4, "Safari 4", new String[]{"Version/4"}, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // before AppleWebKit - - APPLE_MAIL(Manufacturer.APPLE, null, 50, "Apple Mail", new String[]{"AppleWebKit"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit - LOTUS_NOTES(Manufacturer.OTHER, null, 3, "Lotus Notes", new String[]{"Lotus-Notes"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, "Lotus-Notes\\/(([\\d]+)\\.([\\w]+))"), // before Mozilla - - /* - * Thunderbird email client, based on the same Gecko engine Firefox is using. - */ - THUNDERBIRD(Manufacturer.MOZILLA, null, 110, "Thunderbird", new String[]{"Thunderbird"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.GECKO, "Thunderbird\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), // using Gecko Engine - THUNDERBIRD3(Manufacturer.MOZILLA, Browser.THUNDERBIRD, 130, "Thunderbird 3", new String[]{"Thunderbird/3"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.GECKO, null), // using Gecko Engine - THUNDERBIRD2(Manufacturer.MOZILLA, Browser.THUNDERBIRD, 120, "Thunderbird 2", new String[]{"Thunderbird/2"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.GECKO, null), // using Gecko Engine - - CAMINO(Manufacturer.OTHER, null, 5, "Camino", new String[]{"Camino"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, "Camino\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?)"), // using Gecko Engine - CAMINO2(Manufacturer.OTHER, Browser.CAMINO, 17, "Camino 2", new String[]{"Camino/2"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null), // using Gecko Engine - FLOCK(Manufacturer.OTHER, null, 4, "Flock", new String[]{"Flock"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, "Flock\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?)"), - - FIREFOX(Manufacturer.MOZILLA, null, 10, "Firefox", new String[]{"Firefox"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, "Firefox\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), // using Gecko Engine - FIREFOX3MOBILE(Manufacturer.MOZILLA, Browser.FIREFOX, 31, "Firefox 3 Mobile", new String[]{"Firefox/3.5 Maemo"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.GECKO, null), // using Gecko Engine - FIREFOX4(Manufacturer.MOZILLA, Browser.FIREFOX, 40, "Firefox 4", new String[]{"Firefox/4"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null), // using Gecko Engine - FIREFOX3(Manufacturer.MOZILLA, Browser.FIREFOX, 30, "Firefox 3", new String[]{"Firefox/3"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null), // using Gecko Engine - FIREFOX2(Manufacturer.MOZILLA, Browser.FIREFOX, 20, "Firefox 2", new String[]{"Firefox/2"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null), // using Gecko Engine - FIREFOX1_5(Manufacturer.MOZILLA, Browser.FIREFOX, 15, "Firefox 1.5", new String[]{"Firefox/1.5"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null), // using Gecko Engine - - SEAMONKEY(Manufacturer.OTHER, null, 15, "SeaMonkey", new String[]{"SeaMonkey"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, "SeaMonkey\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?)"), // using Gecko Engine - - BOT(Manufacturer.OTHER, null, 12, "Robot/Spider", new String[]{"Mediapartners-Google", "Googlebot", "bot", "spider", "crawler", "Feedfetcher", "Slurp", "Twiceler", "Nutch", "BecomeBot"}, null, BrowserType.ROBOT, RenderingEngine.OTHER, null), - - MOZILLA(Manufacturer.MOZILLA, null, 1, "Mozilla", new String[]{"Mozilla", "Moozilla"}, null, BrowserType.WEB_BROWSER, RenderingEngine.OTHER, null), // rest of the mozilla browsers - - CFNETWORK(Manufacturer.OTHER, null, 6, "CFNetwork", new String[]{"CFNetwork"}, null, BrowserType.UNKNOWN, RenderingEngine.OTHER, null), // Mac OS X cocoa library - - EUDORA(Manufacturer.OTHER, null, 7, "Eudora", new String[]{"Eudora", "EUDORA"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, null), // email client by Qualcomm - - POCOMAIL(Manufacturer.OTHER, null, 8, "PocoMail", new String[]{"PocoMail"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, null), - - THEBAT(Manufacturer.OTHER, null, 9, "The Bat!", new String[]{"The Bat"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, null), // Email Client - - NETFRONT(Manufacturer.OTHER, null, 10, "NetFront", new String[]{"NetFront"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.OTHER, null), // mobile device browser - - EVOLUTION(Manufacturer.OTHER, null, 11, "Evolution", new String[]{"CamelHttpStream"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, null), // http://www.go-evolution.org/Camel.Stream - - LYNX(Manufacturer.OTHER, null, 13, "Lynx", new String[]{"Lynx"}, null, BrowserType.TEXT_BROWSER, RenderingEngine.OTHER, "Lynx\\/(([0-9]+)\\.([\\d]+)\\.?([\\w-+]+)?\\.?([\\w-+]+)?)"), - - DOWNLOAD(Manufacturer.OTHER, null, 16, "Downloading Tool", new String[]{"cURL", "wget"}, null, BrowserType.TEXT_BROWSER, RenderingEngine.OTHER, null), - - UNKNOWN(Manufacturer.OTHER, null, 14, "Unknown", new String[0], null, BrowserType.UNKNOWN, RenderingEngine.OTHER, null); - private final short id; - private final String name; - private final String[] aliases; - private final String[] excludeList; // don't match when these values are in the agent-string - private final BrowserType browserType; - private final Manufacturer manufacturer; - private final RenderingEngine renderingEngine; - private final Browser parent; - private final List children; - private Pattern versionRegEx; - - Browser(Manufacturer manufacturer, Browser parent, int versionId, String name, String[] aliases, String[] exclude, BrowserType browserType, RenderingEngine renderingEngine, String versionRegexString) { - this.id = (short) ((manufacturer.getId() << 8) + (byte) versionId); - this.name = name; - this.parent = parent; - this.children = new ArrayList<>(); - if (this.parent != null) { - this.parent.children.add(this); - } - this.aliases = aliases; - this.excludeList = exclude; - this.browserType = browserType; - this.manufacturer = manufacturer; - this.renderingEngine = renderingEngine; - if (versionRegexString != null) { - this.versionRegEx = Pattern.compile(versionRegexString); - } - } - - /** - * Iterates over all Browsers to compare the browser signature with - * the user agent string. If no match can be found Browser.UNKNOWN will - * be returned. - * - * @param agentString - * @return Browser - */ - public static Browser parseUserAgentString(String agentString) { - for (Browser browser : Browser.values()) { - // only check top level objects - if (browser.parent == null) { - Browser match = browser.checkUserAgent(agentString); - if (match != null) { - return match; // either current operatingSystem or a child object - } - } - } - return Browser.UNKNOWN; - } - - /** - * Returns the enum constant of this type with the specified id. - * Throws IllegalArgumentException if the value does not exist. - * - * @param id - * @return - */ - public static Browser valueOf(short id) { - for (Browser browser : Browser.values()) { - if (browser.getId() == id) - return browser; - } - - // same behavior as standard valueOf(string) method - throw new IllegalArgumentException( - "No enum const for id " + id); - } - - public short getId() { - return id; - } - - public String getName() { - return name; - } - - private Pattern getVersionRegEx() { - if (this.versionRegEx == null) { - if (this.getGroup() != this) - return this.getGroup().getVersionRegEx(); - else - return null; - } - return this.versionRegEx; - } - - /** - * Detects the detailed version information of the browser. Depends on the userAgent to be available. - * Returns null if it can not detect the version information. - * - * @return Version - */ - public Version getVersion(String userAgentString) { - Pattern pattern = this.getVersionRegEx(); - if (userAgentString != null && pattern != null) { - Matcher matcher = pattern.matcher(userAgentString); - if (matcher.find()) { - String fullVersionString = matcher.group(1); - String majorVersion = matcher.group(2); - String minorVersion = "0"; - if (matcher.groupCount() > 2) // usually but not always there is a minor version - minorVersion = matcher.group(3); - return new Version(fullVersionString, majorVersion, minorVersion); - } - } - return null; - } - - /** - * @return the browserType - */ - public BrowserType getBrowserType() { - return browserType; - } - - /** - * @return the manufacturer - */ - public Manufacturer getManufacturer() { - return manufacturer; - } - - /** - * @return the rendering engine - */ - public RenderingEngine getRenderingEngine() { - return renderingEngine; - } - - /** - * @return top level browser family - */ - public Browser getGroup() { - if (this.parent != null) { - return parent.getGroup(); - } - return this; - } - - /* - * Checks if the given user-agent string matches to the browser. - * Only checks for one specific browser. - */ - public boolean isInUserAgentString(String agentString) { - for (String alias : aliases) { - if (agentString.toLowerCase().indexOf(alias.toLowerCase()) != -1) - return true; - } - return false; - } - - /** - * Checks if the given user-agent does not contain one of the tokens which should not match. - * In most cases there are no excluding tokens, so the impact should be small. - * - * @param agentString - * @return - */ - private boolean containsExcludeToken(String agentString) { - if (excludeList != null) { - for (String exclude : excludeList) { - if (agentString.toLowerCase().indexOf(exclude.toLowerCase()) != -1) - return true; - } - } - return false; - } - - private Browser checkUserAgent(String agentString) { - if (this.isInUserAgentString(agentString)) { - if (this.children.size() > 0) { - for (Browser childBrowser : this.children) { - Browser match = childBrowser.checkUserAgent(agentString); - if (match != null) { - return match; - } - } - } - // if children didn't match we continue checking the current to prevent false positives - if (!this.containsExcludeToken(agentString)) { - return this; - } - - } - return null; - } - - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/BrowserType.java b/wise-webapp/src/main/java/com/wisemapping/util/BrowserType.java deleted file mode 100644 index bee131e1..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/BrowserType.java +++ /dev/null @@ -1,83 +0,0 @@ -/* -* Copyright (c) 2008, Harald Walker (bitwalker.nl) -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or -* without modification, are permitted provided that the -* following conditions are met: -* -* * Redistributions of source code must retain the above -* copyright notice, this list of conditions and the following -* disclaimer. -* -* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -package com.wisemapping.util; - -/** - * Enum constants classifying the different types of browsers which are common in user-agent strings - * @author harald - * - */ -public enum BrowserType { - - /** - * Standard web-browser - */ - WEB_BROWSER("Browser"), - /** - * Special web-browser for mobile devices - */ - MOBILE_BROWSER("Browser (mobile)"), - /** - * Text only browser like the good old Lynx - */ - TEXT_BROWSER("Browser (text only)"), - /** - * Email client like Thunderbird - */ - EMAIL_CLIENT("Email Client"), - /** - * Search robot, spider, crawler,... - */ - ROBOT("Robot"), - /** - * Downloading tools - */ - TOOL("Downloading tool"), - UNKNOWN("unknown"); - - private final String name; - - BrowserType(String name) { - this.name = name; - } - - public String getName() { - return name; - } - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/DeviceType.java b/wise-webapp/src/main/java/com/wisemapping/util/DeviceType.java deleted file mode 100644 index 4de82645..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/DeviceType.java +++ /dev/null @@ -1,71 +0,0 @@ -/* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -package com.wisemapping.util; - -/** - * Enum contact for the type of used device - * @author harald - * - */ -public enum DeviceType { - - /** - * Standard desktop or laptop computer - */ - COMPUTER("Computer"), - /** - * Mobile phone or similar small mobile device - */ - MOBILE("Mobile"), - /** - * Small tablet type computer. - */ - TABLET("Tablet"), - /** - * Game console like the Wii or Playstation. - */ - GAME_CONSOLE("Game console"), - /** - * Digital media receiver like the Apple TV. - * No device detection implemented yet for this category. Please send provide user-agent strings if you have some. - */ - DMR("Digital media receiver"), - /** - * Other or unknow type of device. - */ - UNKNOWN("Unknown"); - - String name; - - DeviceType(String name) { - this.name = name; - } - - public String getName() { - return name; - } - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/Manufacturer.java b/wise-webapp/src/main/java/com/wisemapping/util/Manufacturer.java deleted file mode 100644 index be15d19d..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/Manufacturer.java +++ /dev/null @@ -1,145 +0,0 @@ -/* -* Copyright (c) 2008, Harald Walker (bitwalker.nl) -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or -* without modification, are permitted provided that the -* following conditions are met: -* -* * Redistributions of source code must retain the above -* copyright notice, this list of conditions and the following -* disclaimer. -* -* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -package com.wisemapping.util; - -/** - * Enum constants representing manufacturers of operating systems and client software. - * Manufacturer could be used for specific handling of browser requests. - * @author harald - */ - -public enum Manufacturer { - - /** - * Unknow or rare manufacturer - */ - OTHER(1, "Other"), - /** - * Microsoft Corporation - */ - MICROSOFT(2, "Microsoft Corporation"), - /** - * Apple Inc. - */ - APPLE(3, "Apple Inc."), - /** - * Sun Microsystems, Inc. - */ - SUN(4, "Sun Microsystems, Inc."), - /** - * Symbian Ltd. - */ - SYMBIAN(5, "Symbian Ltd."), - /** - * Nokia Corporation - */ - NOKIA(6, "Nokia Corporation"), - /** - * Research In Motion Limited - */ - BLACKBERRY(7, "Research In Motion Limited"), - /** - * Palm, Inc. - */ - PALM(8, "Palm, Inc. "), - /** - * Sony Ericsson Mobile Communications AB - */ - SONY_ERICSSON(9, "Sony Ericsson Mobile Communications AB"), - /** - * Sony Computer Entertainment, Inc. - */ - SONY(10, "Sony Computer Entertainment, Inc."), - /** - * Nintendo - */ - NINTENDO(11, "Nintendo"), - /** - * Opera Software ASA - */ - OPERA(12, "Opera Software ASA"), - /** - * Mozilla Foundation - */ - MOZILLA(13, "Mozilla Foundation"), - /** - * Google Inc. - */ - GOOGLE(15, "Google Inc."), - /** - * CompuServe Interactive Services, Inc. - */ - COMPUSERVE(16, "CompuServe Interactive Services, Inc."), - /** - * Yahoo Inc. - */ - YAHOO(17, "Yahoo Inc."), - /** - * AOL LLC. - */ - AOL(18, "AOL LLC."), - /** - * Mail.com Media Corporation - */ - MMC(19, "Mail.com Media Corporation") - ; - - - private final byte id; - private final String name; - - Manufacturer(int id, String name) { - this.id = (byte) id; - this.name = name; - } - - /** - * @return the id - */ - public byte getId() { - return id; - } - - /** - * @return the name - */ - public String getName() { - return name; - } - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/OperatingSystem.java b/wise-webapp/src/main/java/com/wisemapping/util/OperatingSystem.java deleted file mode 100644 index bb5d5398..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/OperatingSystem.java +++ /dev/null @@ -1,305 +0,0 @@ -/* -* Copyright (c) 2011, Harald Walker (bitwalker.nl) -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or -* without modification, are permitted provided that the -* following conditions are met: -* -* * Redistributions of source code must retain the above -* copyright notice, this list of conditions and the following -* disclaimer. -* -* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -package com.wisemapping.util; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Pattern; - -/** - * Enum constants for most common operating systems. - * @author harald - */ -public enum OperatingSystem { - - // the order is important since the agent string is being compared with the aliases - /** - * Windows Mobile / Windows CE. Exact version unknown. - */ - WINDOWS( Manufacturer.MICROSOFT,null,1, "Windows", new String[] { "Windows" }, new String[] { "Palm" }, DeviceType.COMPUTER, null ), // catch the rest of older Windows systems (95, NT,...) - WINDOWS_7( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,21, "Windows 7", new String[] { "Windows NT 6.1" }, null, DeviceType.COMPUTER, null ), // before Win, yes, Windows 7 is called 6.1 LOL - WINDOWS_VISTA( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,20, "Windows Vista", new String[] { "Windows NT 6" }, null, DeviceType.COMPUTER, null ), // before Win - WINDOWS_2000( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,15, "Windows 2000", new String[] { "Windows NT 5.0" }, null, DeviceType.COMPUTER, null ), // before Win - WINDOWS_XP( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,10, "Windows XP", new String[] { "Windows NT 5" }, null, DeviceType.COMPUTER, null ), // before Win, 5.1 and 5.2 are basically XP systems - WINDOWS_MOBILE7(Manufacturer.MICROSOFT,OperatingSystem.WINDOWS, 51, "Windows Mobile 7", new String[] { "Windows Phone OS 7" }, null, DeviceType.MOBILE, null ), // before Win - WINDOWS_MOBILE( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS, 50, "Windows Mobile", new String[] { "Windows CE" }, null, DeviceType.MOBILE, null ), // before Win - WINDOWS_98( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,5, "Windows 98", new String[] { "Windows 98","Win98" }, new String[] { "Palm" }, DeviceType.COMPUTER, null ), // before Win - - ANDROID( Manufacturer.GOOGLE,null, 0, "Android", new String[] { "Android" }, null, DeviceType.MOBILE, null ), - ANDROID2( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 2, "Android 2.x", new String[] { "Android 2" }, null, DeviceType.MOBILE, null ), - ANDROID2_TABLET(Manufacturer.GOOGLE,OperatingSystem.ANDROID2, 20, "Android 2.x Tablet", new String[] { "GT-P1000","SCH-I800" }, null, DeviceType.TABLET, null ), - ANDROID1( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 1, "Android 1.x", new String[] { "Android 1" }, null, DeviceType.MOBILE, null ), - - /** - * PalmOS, exact version unkown - */ - WEBOS( Manufacturer.PALM,null,11, "WebOS", new String[] { "webOS" }, null, DeviceType.MOBILE, null ), - PALM( Manufacturer.PALM,null,10, "PalmOS", new String[] { "Palm" }, null, DeviceType.MOBILE, null ), - - - /** - * iOS4, with the release of the iPhone 4, Apple renamed the OS to iOS. - */ - IOS(Manufacturer.APPLE,null, 2, "iOS", new String[] { "like Mac OS X" }, null, DeviceType.MOBILE, null ), // before MAC_OS_X_IPHONE for all older versions - iOS4_IPHONE(Manufacturer.APPLE,OperatingSystem.IOS, 41, "iOS 4 (iPhone)", new String[] { "iPhone OS 4" }, null, DeviceType.MOBILE, null ), // before MAC_OS_X_IPHONE for all older versions - MAC_OS_X_IPAD( Manufacturer.APPLE, OperatingSystem.IOS, 50, "Mac OS X (iPad)", new String[] { "iPad" }, null, DeviceType.TABLET, null ), // before Mac OS X - MAC_OS_X_IPHONE(Manufacturer.APPLE, OperatingSystem.IOS, 40, "Mac OS X (iPhone)", new String[] { "iPhone" }, null, DeviceType.MOBILE, null ), // before Mac OS X - MAC_OS_X_IPOD( Manufacturer.APPLE, OperatingSystem.IOS, 30, "Mac OS X (iPod)", new String[] { "iPod" }, null, DeviceType.MOBILE, null ), // before Mac OS X - - MAC_OS_X( Manufacturer.APPLE,null, 10, "Mac OS X", new String[] { "Mac OS X" , "CFNetwork"}, null, DeviceType.COMPUTER, null ), // before Mac - - /** - * Older Mac OS systems before Mac OS X - */ - MAC_OS( Manufacturer.APPLE,null, 1, "Mac OS", new String[] { "Mac" }, null, DeviceType.COMPUTER, null ), // older Mac OS systems - - /** - * Linux based Maemo software platform by Nokia. Used in the N900 phone. http://maemo.nokia.com/ - */ - MAEMO( Manufacturer.NOKIA,null, 2, "Maemo", new String[] { "Maemo" }, null, DeviceType.MOBILE, null ), - - /** - * Various Linux based operating systems. - */ - LINUX( Manufacturer.OTHER,null, 2, "Linux", new String[] { "Linux" , "CamelHttpStream" }, null, DeviceType.COMPUTER, null ), // CamelHttpStream is being used by Evolution, an email client for Linux - - /** - * Other Symbian OS versions - */ - SYMBIAN( Manufacturer.SYMBIAN,null, 1, "Symbian OS", new String[] { "Symbian", "Series60"}, null, DeviceType.MOBILE, null ), - /** - * Symbian OS 9.x versions. Being used by Nokia (N71, N73, N81, N82, N91, N92, N95, ...) - */ - SYMBIAN9( Manufacturer.SYMBIAN,OperatingSystem.SYMBIAN, 20, "Symbian OS 9.x", new String[] {"SymbianOS/9", "Series60/3"}, null, DeviceType.MOBILE, null ), - /** - * Symbian OS 8.x versions. Being used by Nokia (6630, 6680, 6681, 6682, N70, N72, N90). - */ - SYMBIAN8( Manufacturer.SYMBIAN,OperatingSystem.SYMBIAN, 15, "Symbian OS 8.x", new String[] { "SymbianOS/8", "Series60/2.6", "Series60/2.8"}, null, DeviceType.MOBILE, null ), - /** - * Symbian OS 7.x versions. Being used by Nokia (3230, 6260, 6600, 6620, 6670, 7610), - * Panasonic (X700, X800), Samsung (SGH-D720, SGH-D730) and Lenovo (P930). - */ - SYMBIAN7( Manufacturer.SYMBIAN,OperatingSystem.SYMBIAN, 10, "Symbian OS 7.x", new String[] { "SymbianOS/7"}, null, DeviceType.MOBILE, null ), - /** - * Symbian OS 6.x versions. - */ - SYMBIAN6( Manufacturer.SYMBIAN,OperatingSystem.SYMBIAN, 5, "Symbian OS 6.x", new String[] { "SymbianOS/6"}, null, DeviceType.MOBILE, null ), - /** - * Nokia's Series 40 operating system. Series 60 (S60) uses the Symbian OS. - */ - SERIES40 ( Manufacturer.NOKIA,null, 1, "Series 40", new String[] { "Nokia6300"}, null, DeviceType.MOBILE, null ), - /** - * Proprietary operating system used for many Sony Ericsson phones. - */ - SONY_ERICSSON ( Manufacturer.SONY_ERICSSON, null, 1, "Sony Ericsson", new String[] { "SonyEricsson"}, null, DeviceType.MOBILE, null ), // after symbian, some SE phones use symbian - SUN_OS( Manufacturer.SUN, null, 1, "SunOS", new String[] { "SunOS" } , null, DeviceType.COMPUTER, null ), - PSP( Manufacturer.SONY, null, 1, "Sony Playstation", new String[] { "Playstation" }, null, DeviceType.GAME_CONSOLE, null ), - /** - * Nintendo Wii game console. - */ - WII( Manufacturer.NINTENDO,null, 1, "Nintendo Wii", new String[] { "Wii" }, null, DeviceType.GAME_CONSOLE, null ), - /** - * BlackBerryOS. The BlackBerryOS exists in different version. How relevant those versions are, is not clear. - */ - BLACKBERRY( Manufacturer.BLACKBERRY,null, 1, "BlackBerryOS", new String[] { "BlackBerry" }, null, DeviceType.MOBILE, null ), - BLACKBERRY6( Manufacturer.BLACKBERRY,OperatingSystem.BLACKBERRY, 6, "BlackBerry 6", new String[] { "Version/6" }, null, DeviceType.MOBILE, null ), - - UNKNOWN( Manufacturer.OTHER,null, 1, "Unknown", new String[0], null, DeviceType.UNKNOWN, null ); - - private final short id; - private final String name; - private final String[] aliases; - private final String[] excludeList; // don't match when these values are in the agent-string - private final Manufacturer manufacturer; - private final DeviceType deviceType; - private final OperatingSystem parent; - private final List children; - private Pattern versionRegEx; - - OperatingSystem(Manufacturer manufacturer, OperatingSystem parent, int versionId, String name, String[] aliases, - String[] exclude, DeviceType deviceType, String versionRegexString) { - this.manufacturer = manufacturer; - this.parent = parent; - this.children = new ArrayList(); - if (this.parent != null) { - this.parent.children.add(this); - } - // combine manufacturer and version id to one unique id. - this.id = (short) ( ( manufacturer.getId() << 8) + (byte) versionId); - this.name = name; - this.aliases = aliases; - this.excludeList = exclude; - this.deviceType = deviceType; - if (versionRegexString != null) { - this.versionRegEx = Pattern.compile(versionRegexString); - } - } - - - public short getId() { - return id; - } - - public String getName() { - return name; - } - - - /* - * Shortcut to check of an operating system is a mobile device. - * Left in here for backwards compatibility. - */ - public boolean isMobileDevice() { - return deviceType.equals(DeviceType.MOBILE); - } - - public DeviceType getDeviceType() { - return deviceType; - } - - /* - * Gets the top level grouping operating system - */ - public OperatingSystem getGroup() { - if (this.parent != null) { - return parent.getGroup(); - } - return this; - } - - /** - * Returns the manufacturer of the operating system - * @return the manufacturer - */ - public Manufacturer getManufacturer() { - return manufacturer; - } - - /** - * Checks if the given user-agent string matches to the operating system. - * Only checks for one specific operating system. - * @param agentString - * @return boolean - */ - public boolean isInUserAgentString(String agentString) - { - for (String alias : aliases) - { - if (agentString.toLowerCase().indexOf(alias.toLowerCase()) != -1) - return true; - } - return false; - } - - /** - * Checks if the given user-agent does not contain one of the tokens which should not match. - * In most cases there are no excluding tokens, so the impact should be small. - * @param agentString - * @return - */ - private boolean containsExcludeToken(String agentString) - { - if (excludeList != null) { - for (String exclude : excludeList) { - if (agentString.toLowerCase().indexOf(exclude.toLowerCase()) != -1) - return true; - } - } - return false; - } - - private OperatingSystem checkUserAgent(String agentString) { - if (this.isInUserAgentString(agentString)) { - if (this.children.size() > 0) { - for (OperatingSystem childOperatingSystem : this.children) { - OperatingSystem match = childOperatingSystem.checkUserAgent(agentString); - if (match != null) { - return match; - } - } - } - // if children didn't match we continue checking the current to prevent false positives - if (!this.containsExcludeToken(agentString)) { - return this; - } - - } - return null; - } - - /** - * Parses user agent string and returns the best match. - * Returns OperatingSystem.UNKNOWN if there is no match. - * @param agentString - * @return OperatingSystem - */ - public static OperatingSystem parseUserAgentString(String agentString) - { - for (OperatingSystem operatingSystem : OperatingSystem.values()) - { - // only check top level objects - if (operatingSystem.parent == null) { - OperatingSystem match = operatingSystem.checkUserAgent(agentString); - if (match != null) { - return match; // either current operatingSystem or a child object - } - } - } - return OperatingSystem.UNKNOWN; - } - - /** - * Returns the enum constant of this type with the specified id. - * Throws IllegalArgumentException if the value does not exist. - * @param id - * @return - */ - public static OperatingSystem valueOf(short id) - { - for (OperatingSystem operatingSystem : OperatingSystem.values()) - { - if (operatingSystem.getId() == id) - return operatingSystem; - } - - // same behavior as standard valueOf(string) method - throw new IllegalArgumentException( - "No enum const for id " + id); - } - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/RenderingEngine.java b/wise-webapp/src/main/java/com/wisemapping/util/RenderingEngine.java deleted file mode 100644 index bb1bb548..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/RenderingEngine.java +++ /dev/null @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2011, Harald Walker (bitwalker.nl) -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or -* without modification, are permitted provided that the -* following conditions are met: -* -* * Redistributions of source code must retain the above -* copyright notice, this list of conditions and the following -* disclaimer. -* -* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -package com.wisemapping.util; - -/** - * Enum constants classifying the different types of rendering engines which are being used by browsers. - * @author harald - * - */ -public enum RenderingEngine { - - /** - * Trident is the the Microsoft layout engine, mainly used by Internet Explorer. - */ - TRIDENT("Trident"), - /** - * HTML parsing and rendering engine of Microsoft Office Word, used by some other products of the Office suite instead of Trident. - */ - WORD("Microsoft Office Word"), - /** - * Open source and cross platform layout engine, used by Firefox and many other browsers. - */ - GECKO("Gecko"), - /** - * Layout engine based on KHTML, used by Safari, Chrome and some other browsers. - */ - WEBKIT("WebKit"), - /** - * Proprietary layout engine by Opera Software ASA - */ - PRESTO("Presto"), - /** - * Original layout engine of the Mozilla browser and related products. Predecessor of Gecko. - */ - MOZILLA("Mozilla"), - /** - * Layout engine of the KDE project - */ - KHTML("KHTML"), - /** - * Other or unknown layout engine. - */ - OTHER("Other"); - - String name; - - RenderingEngine(String name) { - this.name = name; - } - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/TimeUtils.java b/wise-webapp/src/main/java/com/wisemapping/util/TimeUtils.java index 5ac37d29..2fac153e 100644 --- a/wise-webapp/src/main/java/com/wisemapping/util/TimeUtils.java +++ b/wise-webapp/src/main/java/com/wisemapping/util/TimeUtils.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.util; import org.jetbrains.annotations.Nullable; diff --git a/wise-webapp/src/main/java/com/wisemapping/util/UserAgent.java b/wise-webapp/src/main/java/com/wisemapping/util/UserAgent.java deleted file mode 100644 index 8be0b2fb..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/UserAgent.java +++ /dev/null @@ -1,222 +0,0 @@ -/* -* Copyright (c) 2008, Harald Walker (bitwalker.nl) -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or -* without modification, are permitted provided that the -* following conditions are met: -* -* * Redistributions of source code must retain the above -* copyright notice, this list of conditions and the following -* disclaimer. -* -* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -package com.wisemapping.util; - -/** - * Container class for user-agent information with operating system and browser details. - * Can decode user-agent strings. - *

- * Resources:
- * User Agent String.Com
- * List of User-Agents
- * Browser ID (User-Agent) Strings
- * Mobile Browser ID (User-Agent) Strings
- * Browser-Kennungen
- * Device Atlas - Mobile Device Intelligence
- * Mobile Opera user-agent strings
- * S60 platform
- * Understanding User-Agent Strings
- * Sony Ericsson Web Docs & Tools
- * What is the Safari user-agent string
- * List of User Agent Strings
- * Detecting Internet Explorer Mobile's User-Agent on the server - */ - -import org.jetbrains.annotations.Nullable; - -/** - * @author harald - */ -public class UserAgent { - - private OperatingSystem operatingSystem = OperatingSystem.UNKNOWN; - private Browser browser = Browser.UNKNOWN; - private int id; - private String userAgentString; - - public UserAgent(OperatingSystem operatingSystem, Browser browser) { - this.operatingSystem = operatingSystem; - this.browser = browser; - this.id = ((operatingSystem.getId() << 16) + browser.getId()); - } - - public UserAgent(@Nullable String userAgentString) { - if (userAgentString != null) { - Browser browser = Browser.parseUserAgentString(userAgentString); - - OperatingSystem operatingSystem = OperatingSystem.UNKNOWN; - - // BOTs don't have an interesting OS for us - if (browser != Browser.BOT) - operatingSystem = OperatingSystem.parseUserAgentString(userAgentString); - - this.operatingSystem = operatingSystem; - this.browser = browser; - this.id = ((operatingSystem.getId() << 16) + browser.getId()); - this.userAgentString = userAgentString; - - } else { - this.operatingSystem = OperatingSystem.UNKNOWN; - this.browser = Browser.UNKNOWN; - } - } - - - /** - * @param userAgentString - * @return UserAgent - */ - public static UserAgent parseUserAgentString(String userAgentString) { - return new UserAgent(userAgentString); - } - - - /** - * Detects the detailed version information of the browser. Depends on the userAgent to be available. - * Use it only after using UserAgent(String) or UserAgent.parseUserAgent(String). - * Returns null if it can not detect the version information. - * - * @return Version - */ - public Version getBrowserVersion() { - return this.browser.getVersion(this.userAgentString); - } - - /** - * @return the system - */ - public OperatingSystem getOperatingSystem() { - return operatingSystem; - } - - /** - * @return the browser - */ - public Browser getBrowser() { - return browser; - } - - /** - * Returns an unique integer value of the operating system & browser combination - * - * @return the id - */ - public int getId() { - return id; - } - - /** - * Combined string representation of both enums - */ - public String toString() { - return this.operatingSystem.toString() + "-" + this.browser.toString(); - } - - /** - * Returns UserAgent based on specified unique id - * - * @param id - * @return - */ - public static UserAgent valueOf(int id) { - OperatingSystem operatingSystem = OperatingSystem.valueOf((short) (id >> 16)); - Browser browser = Browser.valueOf((short) (id & 0x0FFFF)); - return new UserAgent(operatingSystem, browser); - } - - /** - * Returns UserAgent based on combined string representation - * - * @param name - * @return - */ - public static UserAgent valueOf(String name) { - if (name == null) - throw new NullPointerException("Name is null"); - - String[] elements = name.split("-"); - - if (elements.length == 2) { - OperatingSystem operatingSystem = OperatingSystem.valueOf(elements[0]); - Browser browser = Browser.valueOf(elements[1]); - return new UserAgent(operatingSystem, browser); - } - - throw new IllegalArgumentException( - "Invalid string for userAgent " + name); - } - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((browser == null) ? 0 : browser.hashCode()); - result = prime * result + id; - result = prime * result - + ((operatingSystem == null) ? 0 : operatingSystem.hashCode()); - return result; - } - - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final UserAgent other = (UserAgent) obj; - if (browser == null) { - if (other.browser != null) - return false; - } else if (!browser.equals(other.browser)) - return false; - if (id != other.id) - return false; - if (operatingSystem == null) { - return other.operatingSystem == null; - } else return operatingSystem.equals(other.operatingSystem); - } - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/VelocityEngineUtils.java b/wise-webapp/src/main/java/com/wisemapping/util/VelocityEngineUtils.java index ca5e82a1..acded03b 100644 --- a/wise-webapp/src/main/java/com/wisemapping/util/VelocityEngineUtils.java +++ b/wise-webapp/src/main/java/com/wisemapping/util/VelocityEngineUtils.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.util; import org.apache.commons.logging.Log; diff --git a/wise-webapp/src/main/java/com/wisemapping/util/VelocityEngineWrapper.java b/wise-webapp/src/main/java/com/wisemapping/util/VelocityEngineWrapper.java index f6cf0fcd..44ebb6a3 100644 --- a/wise-webapp/src/main/java/com/wisemapping/util/VelocityEngineWrapper.java +++ b/wise-webapp/src/main/java/com/wisemapping/util/VelocityEngineWrapper.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.util; import org.apache.commons.collections.ExtendedProperties; diff --git a/wise-webapp/src/main/java/com/wisemapping/util/Version.java b/wise-webapp/src/main/java/com/wisemapping/util/Version.java deleted file mode 100644 index 5a528815..00000000 --- a/wise-webapp/src/main/java/com/wisemapping/util/Version.java +++ /dev/null @@ -1,112 +0,0 @@ -/* -* Copyright (c) 2011, Harald Walker (bitwalker.nl) -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or -* without modification, are permitted provided that the -* following conditions are met: -* -* * Redistributions of source code must retain the above -* copyright notice, this list of conditions and the following -* disclaimer. -* -* * Redistributions in binary form must reproduce the above -* copyright notice, this list of conditions and the following -* disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* * Neither the name of bitwalker nor the names of its -* contributors may be used to endorse or promote products -* derived from this software without specific prior written -* permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -package com.wisemapping.util; - -/** - * Container for general version information. - * All version information is stored as String as sometimes version information includes alphabetical characters. - * @author harald - */ -public class Version { - - String version; - String majorVersion; - String minorVersion; - - public Version(String version, String majorVersion, String minorVersion) { - super(); - this.version = version; - this.majorVersion = majorVersion; - this.minorVersion = minorVersion; - } - - public String getVersion() { - return version; - } - - public String getMajorVersion() { - return majorVersion; - } - - public String getMinorVersion() { - return minorVersion; - } - - @Override - public String toString() { - return version; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result - + ((majorVersion == null) ? 0 : majorVersion.hashCode()); - result = prime * result - + ((minorVersion == null) ? 0 : minorVersion.hashCode()); - result = prime * result + ((version == null) ? 0 : version.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Version other = (Version) obj; - if (majorVersion == null) { - if (other.majorVersion != null) - return false; - } else if (!majorVersion.equals(other.majorVersion)) - return false; - if (minorVersion == null) { - if (other.minorVersion != null) - return false; - } else if (!minorVersion.equals(other.minorVersion)) - return false; - if (version == null) { - return other.version == null; - } else return version.equals(other.version); - } - - -} diff --git a/wise-webapp/src/main/java/com/wisemapping/util/ZipUtils.java b/wise-webapp/src/main/java/com/wisemapping/util/ZipUtils.java index 4fab1a60..bff6a6e2 100755 --- a/wise-webapp/src/main/java/com/wisemapping/util/ZipUtils.java +++ b/wise-webapp/src/main/java/com/wisemapping/util/ZipUtils.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/validator/LabelValidator.java b/wise-webapp/src/main/java/com/wisemapping/validator/LabelValidator.java index bd5e2035..4f64de9b 100644 --- a/wise-webapp/src/main/java/com/wisemapping/validator/LabelValidator.java +++ b/wise-webapp/src/main/java/com/wisemapping/validator/LabelValidator.java @@ -1,3 +1,20 @@ +/* + * Copyright [2022] [wisemapping] + * + * Licensed under WiseMapping Public License, Version 1.0 (the "License"). + * It is basically the Apache License, Version 2.0 (the "License") plus the + * "powered by wisemapping" text requirement on every single page; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the license at + * + * http://www.wisemapping.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.wisemapping.validator; import com.wisemapping.model.Constants; diff --git a/wise-webapp/src/main/java/com/wisemapping/validator/MapInfoValidator.java b/wise-webapp/src/main/java/com/wisemapping/validator/MapInfoValidator.java index b0dbfad8..79ba7024 100755 --- a/wise-webapp/src/main/java/com/wisemapping/validator/MapInfoValidator.java +++ b/wise-webapp/src/main/java/com/wisemapping/validator/MapInfoValidator.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/validator/Messages.java b/wise-webapp/src/main/java/com/wisemapping/validator/Messages.java index ac28ad7e..f094f854 100644 --- a/wise-webapp/src/main/java/com/wisemapping/validator/Messages.java +++ b/wise-webapp/src/main/java/com/wisemapping/validator/Messages.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/validator/UserValidator.java b/wise-webapp/src/main/java/com/wisemapping/validator/UserValidator.java index 88c48589..77e87a9c 100644 --- a/wise-webapp/src/main/java/com/wisemapping/validator/UserValidator.java +++ b/wise-webapp/src/main/java/com/wisemapping/validator/UserValidator.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/validator/Utils.java b/wise-webapp/src/main/java/com/wisemapping/validator/Utils.java index 9ed6e51e..1ccc04e6 100644 --- a/wise-webapp/src/main/java/com/wisemapping/validator/Utils.java +++ b/wise-webapp/src/main/java/com/wisemapping/validator/Utils.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/validator/ValidatorUtils.java b/wise-webapp/src/main/java/com/wisemapping/validator/ValidatorUtils.java index 076db874..f4184b48 100755 --- a/wise-webapp/src/main/java/com/wisemapping/validator/ValidatorUtils.java +++ b/wise-webapp/src/main/java/com/wisemapping/validator/ValidatorUtils.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/view/ChangePasswordBean.java b/wise-webapp/src/main/java/com/wisemapping/view/ChangePasswordBean.java index d5df6b53..eeec894c 100644 --- a/wise-webapp/src/main/java/com/wisemapping/view/ChangePasswordBean.java +++ b/wise-webapp/src/main/java/com/wisemapping/view/ChangePasswordBean.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/view/CollaboratorBean.java b/wise-webapp/src/main/java/com/wisemapping/view/CollaboratorBean.java index ed1e9693..f6c2b2f8 100755 --- a/wise-webapp/src/main/java/com/wisemapping/view/CollaboratorBean.java +++ b/wise-webapp/src/main/java/com/wisemapping/view/CollaboratorBean.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/view/MindMapBean.java b/wise-webapp/src/main/java/com/wisemapping/view/MindMapBean.java index 4c061062..4b806f3a 100644 --- a/wise-webapp/src/main/java/com/wisemapping/view/MindMapBean.java +++ b/wise-webapp/src/main/java/com/wisemapping/view/MindMapBean.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/view/MindMapInfoBean.java b/wise-webapp/src/main/java/com/wisemapping/view/MindMapInfoBean.java index dcb348bf..3ef6ca20 100644 --- a/wise-webapp/src/main/java/com/wisemapping/view/MindMapInfoBean.java +++ b/wise-webapp/src/main/java/com/wisemapping/view/MindMapInfoBean.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/view/UserBean.java b/wise-webapp/src/main/java/com/wisemapping/view/UserBean.java index 125f323e..e32cd3d6 100644 --- a/wise-webapp/src/main/java/com/wisemapping/view/UserBean.java +++ b/wise-webapp/src/main/java/com/wisemapping/view/UserBean.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/ApplicationContextInitializer.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/ApplicationContextInitializer.java index 5f31863b..d011e92c 100644 --- a/wise-webapp/src/main/java/com/wisemapping/webmvc/ApplicationContextInitializer.java +++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/ApplicationContextInitializer.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java index 36295d53..4c01c51d 100644 --- a/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java +++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java @@ -1,5 +1,5 @@ /* -* Copyright [2015] [wisemapping] +* Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/MindmapController.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/MindmapController.java index e38dc9c5..03317139 100644 --- a/wise-webapp/src/main/java/com/wisemapping/webmvc/MindmapController.java +++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/MindmapController.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the @@ -47,7 +47,6 @@ import java.util.Locale; @Controller public class MindmapController { - public static final String LOCK_SESSION_ATTRIBUTE = "lockSession"; @Qualifier("mindmapService") @Autowired private MindmapService mindmapService; @@ -76,19 +75,16 @@ public class MindmapController { private String showEditorPage(int id, @NotNull final Model model, boolean requiresLock) throws WiseMappingException { final MindMapBean mindmapBean = findMindmapBean(id); final Mindmap mindmap = mindmapBean.getDelegated(); - final User collaborator = Utils.getUser(); + final User user = Utils.getUser(); final Locale locale = LocaleContextHolder.getLocale(); // Is the mindmap locked ?. boolean isLocked = false; - boolean readOnlyMode = !requiresLock || !mindmap.hasPermissions(collaborator, CollaborationRole.EDITOR); + boolean readOnlyMode = !requiresLock || !mindmap.hasPermissions(user, CollaborationRole.EDITOR); if (!readOnlyMode) { final LockManager lockManager = this.mindmapService.getLockManager(); - if (lockManager.isLocked(mindmap) && !lockManager.isLockedBy(mindmap, collaborator)) { + if (lockManager.isLocked(mindmap) && !lockManager.isLockedBy(mindmap, user)) { isLocked = true; - } else { - model.addAttribute("lockTimestamp", mindmap.getLastModificationTime().getTimeInMillis()); - model.addAttribute(LOCK_SESSION_ATTRIBUTE, lockManager.generateSession()); } model.addAttribute("lockInfo", lockManager.getLockInfo(mindmap)); } @@ -97,8 +93,7 @@ public class MindmapController { // Configure default locale for the editor ... model.addAttribute("locale", locale.toString().toLowerCase()); - model.addAttribute("principal", collaborator); - model.addAttribute("memoryPersistence", false); + model.addAttribute("principal", user); model.addAttribute("mindmapLocked", isLocked); return "mindmapEditor"; @@ -107,23 +102,17 @@ public class MindmapController { @RequestMapping(value = "maps/{id}/view", method = RequestMethod.GET) public String showMindmapViewerPage(@PathVariable int id, @NotNull Model model) throws WiseMappingException { final String result = showPrintPage(id, model); - model.addAttribute("readOnlyMode", true); return result; } @RequestMapping(value = "maps/{id}/try", method = RequestMethod.GET) public String showMindmapTryPage(@PathVariable int id, @NotNull Model model) throws WiseMappingException { - final String result = showEditorPage(id, model, false); - model.addAttribute("memoryPersistence", true); - model.addAttribute("readOnlyMode", false); - return result; + return showEditorPage(id, model, false); } @RequestMapping(value = "maps/{id}/{hid}/view", method = RequestMethod.GET) public String showMindmapViewerRevPage(@PathVariable int id, @PathVariable int hid, @NotNull Model model) throws WiseMappingException { - final String result = showPrintPage(id, model); - model.addAttribute("readOnlyMode", true); model.addAttribute("hid", String.valueOf(hid)); return result; } @@ -176,7 +165,7 @@ public class MindmapController { private MindMapBean findMindmapBean(int mapId) throws MapCouldNotFoundException, AccessDeniedSecurityException { final User user = Utils.getUser(); if (!mindmapService.hasPermissions(user, mapId, CollaborationRole.VIEWER)) { - throw new AccessDeniedSecurityException("No enough permissions to open map with id" + mapId); + throw new AccessDeniedSecurityException(mapId, user); } final Mindmap mindmap = findMindmap(mapId); diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/UsersController.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/UsersController.java index d21768a2..2db75cd5 100644 --- a/wise-webapp/src/main/java/com/wisemapping/webmvc/UsersController.java +++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/UsersController.java @@ -1,5 +1,5 @@ /* - * Copyright [2015] [wisemapping] + * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the diff --git a/wise-webapp/src/main/resources/mail/newCollaboration.vm b/wise-webapp/src/main/resources/mail/newCollaboration.vm index 4d1490d2..cc52099a 100755 --- a/wise-webapp/src/main/resources/mail/newCollaboration.vm +++ b/wise-webapp/src/main/resources/mail/newCollaboration.vm @@ -10,13 +10,12 @@ WiseMapping Log + alt="WiseMapping Logo"/> - I've shared - ${mindmap.title} mindmap with you. + + I've shared ${mindmap.title} mindmap with you. diff --git a/wise-webapp/src/main/resources/messages_de.properties b/wise-webapp/src/main/resources/messages_de.properties index e45cf2f1..6b96a056 100644 --- a/wise-webapp/src/main/resources/messages_de.properties +++ b/wise-webapp/src/main/resources/messages_de.properties @@ -1,53 +1,68 @@ # Default English Support. -DESCRIPTION = Beschreibung -SITE.TITLE = WiseMapping -FIELD_REQUIRED = Ein benötigtes Feld kann icht leer gelassen werden -EMAIL_ALREADY_EXIST = Die email Adresse existiert bereits. -NO_VALID_EMAIL_ADDRESS = Ungültige email Adresse -PASSWORD_MISMATCH = Ihre Passwort Angaben sind nicht identisch -CREATOR = Urheber -WELCOME = Willkommen -SHARE = Veröffentlichen -UNEXPECTED_ERROR = Ein unerwarteter Fehler ist aufgetreten. -MAP_TITLE_ALREADY_EXISTS = Sie haben schon eine map mit identischem Namen -LABEL_TITLE_ALREADY_EXISTS = Sie haben bereits ein Label mit demselben Namen -TUTORIAL.MULTIPLE_TEXT_STYLES = Mehrfache Textstile -TUTORIAL.DIFFERENT_SHAPES = Verschiedene Formen -TUTORIAL.FANCY_ICONS = Fantasievolle Szmbole -TUTORIAL.MOVE_WITH_ARROWS = Mit Pfeiltasten zwischen Themen auswählen -TUTORIAL.START_TYPING_TO_EDIT_TEXT = Einfach mit dem tippen beginnen, um Text zu editieren -TUTORIAL.CTRL_TO_ADD_CHILD = Drücke Ctrl/Meta+Enter um ein Unterthema einzufügen -TUTORIAL.ENTER_TO_ADD_SIBLING = Drücke Enter um ein Schwesterthema einzufügen -TUTORIAL.MORE_KEY_TIPS = Mehr ?. Drücke auf obige Tastenkürzel -TUTORIAL.DOUBLE_CLICK_TO_ADD = Doppelklick auf den Canvas, um Themen zu erzeugen -TUTORIAL.DRAG_AND_DROP_TO_POSITION = Ziehen des Thema auf die Position -TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT = Doppelklic auf ein Thema, um Text zu editieren -TUTORIAL.ADD_NOTES = Füge Notizen hinzu -TUTORIAL.USER_THE_TOOLBAR = Benutze die Werkzeugleiste -TUTORIAL.PUBLISH_YOUR_MAPS = Veröffentliche Ihre map -TUTORIAL.EMBED_IN_BLOGS = In Blog einbinden -TUTORIAL.INVITE_FRIEND = Freunde zur zusammenarbeit einladen -TUTORIAL.SHARING = Mitbenutzung -TUTORIAL.EDITION_USING_MOUSE = Editieren mit der Maus -TUTORIAL.EDITION_USING_KEYBOARD = Editieren mit der Tastatur -TUTORIAL.ADD_LINKS_WEBPAGES = Verbindungen auf Internetseiten hinzufügen -TUTORIAL.TOPIC_PROPERTIES = Themen Eigenschaften -TUTORIAL.HOW_TO_START = Wie fange ich an ? -TUTORIAL.FONT_COLOR = Farbe -TUTORIAL.FONT_STYLE = Stil -TUTORIAL.FONT_TYPE = Typ -TUTORIAL.SAMPLE_NOTE = Das ist eine einfache Notiz \!. -CAPTCHA_LOADING_ERROR = ReCaptcha konnte nicht geladen werden. Sie müssen den Zugriff auf den Google ReCaptcha Dienst sicher stellen. -ACCESS_HAS_BEEN_REVOKED = Ihre Zugriffsrechte auf diese map sind zurückgesetzt worden. Kontaktieren Sie den Besitzer dieser map. -MAP_CAN_NOT_BE_FOUND = Die Karte kann nicht gefunden werden. Es muss gelöscht worden sein. -LABEL_CAN_NOT_BE_FOUND = Das Etikett kann nicht gefunden werden. Es muss gelöscht worden sein. -MINDMAP_TIMESTAMP_OUTDATED = Es ist nicht möglich, Ihre Änderungen zu speichern, da Ihre Mindmap von „{0}“ geändert wurde. Aktualisieren Sie die Seite und versuchen Sie es erneut. -MINDMAP_OUTDATED_BY_YOU = Ihre Änderungen können nicht gespeichert werden, da die Karte veraltet ist. Haben Sie mehrere Tabs geöffnet? Aktualisieren Sie die Seite und versuchen Sie es erneut. -MINDMAP_LOCKED = Karte wird bearbeitet von {0} <{1}>. Die Karte wird im schreibgeschützten Modus geöffnet. -MINDMAP_IS_LOCKED = Mindmap ist für die Bearbeitung gesperrt. +DESCRIPTION=Beschreibung +SITE.TITLE=WiseMapping +FIELD_REQUIRED=Ein benötigtes Feld kann icht leer gelassen werden +EMAIL_ALREADY_EXIST=Die email Adresse existiert bereits. +NO_VALID_EMAIL_ADDRESS=Ungültige email Adresse +PASSWORD_MISMATCH=Ihre Passwort Angaben sind nicht identisch +CREATOR=Urheber +WELCOME=Willkommen +SHARE=Veröffentlichen +UNEXPECTED_ERROR=Ein unerwarteter Fehler ist aufgetreten. +MAP_TITLE_ALREADY_EXISTS=Sie haben schon eine map mit identischem Namen +LABEL_TITLE_ALREADY_EXISTS=Sie haben bereits ein Label mit demselben Namen +TUTORIAL.MULTIPLE_TEXT_STYLES=Mehrfache Textstile +TUTORIAL.DIFFERENT_SHAPES=Verschiedene Formen +TUTORIAL.FANCY_ICONS=Fantasievolle Szmbole +TUTORIAL.MOVE_WITH_ARROWS=Mit Pfeiltasten zwischen Themen auswählen +TUTORIAL.START_TYPING_TO_EDIT_TEXT=Einfach mit dem tippen beginnen, um Text zu editieren +TUTORIAL.CTRL_TO_ADD_CHILD=Drücke Ctrl/Meta+Enter um ein Unterthema einzufügen +TUTORIAL.ENTER_TO_ADD_SIBLING=Drücke Enter um ein Schwesterthema einzufügen +TUTORIAL.MORE_KEY_TIPS=Mehr ?. Drücke auf obige Tastenkürzel +TUTORIAL.DOUBLE_CLICK_TO_ADD=Doppelklick auf den Canvas, um Themen zu erzeugen +TUTORIAL.DRAG_AND_DROP_TO_POSITION=Ziehen des Thema auf die Position +TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT=Doppelklic auf ein Thema, um Text zu editieren +TUTORIAL.ADD_NOTES=Füge Notizen hinzu +TUTORIAL.USER_THE_TOOLBAR=Benutze die Werkzeugleiste +TUTORIAL.PUBLISH_YOUR_MAPS=Veröffentliche Ihre map +TUTORIAL.EMBED_IN_BLOGS=In Blog einbinden +TUTORIAL.INVITE_FRIEND=Freunde zur zusammenarbeit einladen +TUTORIAL.SHARING=Mitbenutzung +TUTORIAL.EDITION_USING_MOUSE=Editieren mit der Maus +TUTORIAL.EDITION_USING_KEYBOARD=Editieren mit der Tastatur +TUTORIAL.ADD_LINKS_WEBPAGES=Verbindungen auf Internetseiten hinzufügen +TUTORIAL.TOPIC_PROPERTIES=Themen Eigenschaften +TUTORIAL.HOW_TO_START=Wie fange ich an ? +TUTORIAL.FONT_COLOR=Farbe +TUTORIAL.FONT_STYLE=Stil +TUTORIAL.FONT_TYPE=Typ +TUTORIAL.SAMPLE_NOTE=Das ist eine einfache Notiz \!. +CAPTCHA_LOADING_ERROR=ReCaptcha konnte nicht geladen werden. Sie müssen den Zugriff auf den Google ReCaptcha Dienst sicher stellen. +ACCESS_HAS_BEEN_REVOKED=Ihre Zugriffsrechte auf diese map sind zurückgesetzt worden. Kontaktieren Sie den Besitzer dieser map. +MAP_CAN_NOT_BE_FOUND=Die Karte kann nicht gefunden werden. Es muss gelöscht worden sein. +LABEL_CAN_NOT_BE_FOUND=Das Etikett kann nicht gefunden werden. Es muss gelöscht worden sein. +MINDMAP_TIMESTAMP_OUTDATED=Es ist nicht möglich, Ihre Änderungen zu speichern, da Ihre Mindmap von „{0}“ geändert wurde. Aktualisieren Sie die Seite und versuchen Sie es erneut. +MINDMAP_OUTDATED_BY_YOU=Ihre Änderungen können nicht gespeichert werden, da die Karte veraltet ist. Haben Sie mehrere Tabs geöffnet? Aktualisieren Sie die Seite und versuchen Sie es erneut. +MINDMAP_LOCKED=Karte wird bearbeitet von {0} <{1}>. Die Karte wird im schreibgeschützten Modus geöffnet. +MINDMAP_IS_LOCKED=Mindmap ist für die Bearbeitung gesperrt. # Confirmed -RESET_PASSWORD_INVALID_EMAIL = Die angegebene E-Mail-Adresse ist kein gültiges Benutzerkonto. Bitte versuchen Sie es erneut mit einer gültigen E-Mail-Adresse. -TRY_WELCOME = Dieser Ausgabebereich zeigt einige der Mindmap-Editor-Funktionen \!. -UNEXPECTED_ERROR_DETAILS = Unerwarteter Fehler bei der Verarbeitung der Anforderung. +RESET_PASSWORD_INVALID_EMAIL=Die angegebene E-Mail-Adresse ist kein gültiges Benutzerkonto. Bitte versuchen Sie es erneut mit einer gültigen E-Mail-Adresse. +TRY_WELCOME=Dieser Ausgabebereich zeigt einige der Mindmap-Editor-Funktionen \!. +UNEXPECTED_ERROR_DETAILS=Unerwarteter Fehler bei der Verarbeitung der Anforderung. NO_ENOUGH_PERMISSIONS=Diese map ist nicht mehr verfügbar. NO_ENOUGH_PERMISSIONS_DETAILS=Sie haben nicht die erforderlichen Rechte, um sich diese map anzusehen. Diese map ist entweder privat oder wurde gelöscht. +REGISTRATION.EMAIL_SUBJECT=Willkommen bei WiseMapping! +REGISTRATION.EMAIL_TITLE=Ihr Konto wurde erfolgreich erstellt +REGISTRATION.EMAIL_BODY=

Vielen Dank für Ihr Interesse an WiseMapping. Klicken Sie hier, um mit dem Erstellen und Teilen neuer Mindmaps zu beginnen. Wenn Sie Feedback oder Ideen haben, senden Sie uns eine E-Mail an feedback@wisemapping.com. Wir würden uns freuen, von Ihnen zu hören.

+CHANGE_PASSWORD.EMAIL_SUBJECT=Dein Passwort wurde zurück gesetzt +CHANGE_PASSWORD.EMAIL_TITLE=Ein temporäres Passwort wurde generiert +CHANGE_PASSWORD.EMAIL_BODY=

Jemand, höchstwahrscheinlich Sie selbst, hat ein neues Passwort für Ihr WiseMapping-Konto angefordert.

Hier ist Ihr neues Passwort: {0}

Sie können sich anmelden, indem Sie hier klicken . Wir empfehlen Ihnen dringend, das Passwort so schnell wie möglich zu ändern.

+PASSWORD_CHANGED.EMAIL_SUBJECT=Ihr Passwort wurde geändert +PASSWORD_CHANGED.EMAIL_TITLE=Ihr Passwort wurde erfolgreich geändert +PASSWORD_CHANGED.EMAIL_BODY=

Dies ist nur eine Benachrichtigung, dass Ihr Passwort geändert wurde. Es sind keine weiteren Maßnahmen erforderlich.

+CAPTCHA_TIMEOUT_OUT_DUPLICATE=Bitte aktualisieren Sie die Seite und versuchen Sie es erneut. +CAPTCHA_INVALID_INPUT_RESPONSE=Ungültige Eingabeantwort, aktualisieren Sie die Seite und versuchen Sie es erneut. +MINDMAP_EMPTY_ERROR=Mindmap darf nicht leer sein. +INVALID_MINDMAP_FORMAT=Ungültiges Mindmap-Format. +TOO_BIG_MINDMAP=Sie haben das Limit von 5000 Themen in einer Mindmap erreicht. +SHARE_MAP.EMAIL_SUBJECT={0} hat eine Mindmap mit Ihnen geteilt diff --git a/wise-webapp/src/main/resources/messages_en.properties b/wise-webapp/src/main/resources/messages_en.properties index a6a9fafc..319a950a 100644 --- a/wise-webapp/src/main/resources/messages_en.properties +++ b/wise-webapp/src/main/resources/messages_en.properties @@ -1,58 +1,69 @@ # Default English Support. -DESCRIPTION = Description -SITE.TITLE = WiseMapping -FIELD_REQUIRED = Required field cannot be left blank -EMAIL_ALREADY_EXIST = There is an account already with this email. -NO_VALID_EMAIL_ADDRESS = Invalid email address -PASSWORD_MISMATCH = Your password entries did not match -CREATOR = Creator -WELCOME = Welcome -SHARE = Share -UNEXPECTED_ERROR = An unexpected error has occurred. -MAP_TITLE_ALREADY_EXISTS = You have already a map with the same name -LABEL_TITLE_ALREADY_EXISTS = You have already a label with the same name -TUTORIAL.MULTIPLE_TEXT_STYLES = Multiple Text Styles -TUTORIAL.DIFFERENT_SHAPES = Different Shapes -TUTORIAL.FANCY_ICONS = Fancy Icons -TUTORIAL.MOVE_WITH_ARROWS = Move Between Topics With The Arrows -TUTORIAL.START_TYPING_TO_EDIT_TEXT = Start Typing to Edit Text -TUTORIAL.CTRL_TO_ADD_CHILD = Press Ctrl/Meta+Enter to Add Child Topic -TUTORIAL.ENTER_TO_ADD_SIBLING = Press Enter to Add a Sibling Topic -TUTORIAL.MORE_KEY_TIPS = More ?. Click on shortcuts above -TUTORIAL.DOUBLE_CLICK_TO_ADD = Double Click on the Canvas to Create Topics -TUTORIAL.DRAG_AND_DROP_TO_POSITION = Drag and Drop Topics Position -TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT = Double Click on a Topic to Edit the Text -TUTORIAL.ADD_NOTES = Add Notes -TUTORIAL.USER_THE_TOOLBAR = Use the Toolbar -TUTORIAL.PUBLISH_YOUR_MAPS = Publish your Mindmap -TUTORIAL.EMBED_IN_BLOGS = Embed in Blogs -TUTORIAL.INVITE_FRIEND = Invite Friends to Collaborate -TUTORIAL.SHARING = Sharing -TUTORIAL.EDITION_USING_MOUSE = Edition Using Mouse -TUTORIAL.EDITION_USING_KEYBOARD = Edition Using Keyboard -TUTORIAL.ADD_LINKS_WEBPAGES = Add Links to Web Pages -TUTORIAL.TOPIC_PROPERTIES = Topics Properties -TUTORIAL.HOW_TO_START = How to Start ? -TUTORIAL.FONT_COLOR = Color -TUTORIAL.FONT_STYLE = Styles -TUTORIAL.FONT_TYPE = Type -TUTORIAL.SAMPLE_NOTE = This is a simple note \!. -CAPTCHA_LOADING_ERROR = ReCaptcha could not be loaded. You must have access to Google ReCaptcha service. -ACCESS_HAS_BEEN_REVOKED = Your access permissions to this map has been revoked. Contact map owner. -MAP_CAN_NOT_BE_FOUND = The map can not be found. It must have been deleted. -LABEL_CAN_NOT_BE_FOUND = The label can not be found. It must have been deleted. -MINDMAP_TIMESTAMP_OUTDATED = It's not possible to save your changes because your mindmap has been modified by ''{0}''. Refresh the page and try again. -MINDMAP_OUTDATED_BY_YOU = It's not possible to save your changes because map is out of date. Do you have multiple tabs opened ?. Refresh the page and try again. -MINDMAP_LOCKED = Map is being edited by {0} <{1}>. Map is opened in read only mode. -MINDMAP_IS_LOCKED = Min map is locked for edition. +DESCRIPTION=Description +SITE.TITLE=WiseMapping +FIELD_REQUIRED=Required field cannot be left blank +EMAIL_ALREADY_EXIST=There is an account already with this email. +NO_VALID_EMAIL_ADDRESS=Invalid email address +INVALID_EMAIL_ADDRESS=Invalid email address. Please, verify that your entered valid email address. +PASSWORD_MISMATCH=Your password entries did not match +CREATOR=Creator +WELCOME=Welcome +SHARE=Share +UNEXPECTED_ERROR=An unexpected error has occurred. +MAP_TITLE_ALREADY_EXISTS=You have already a map with the same name +LABEL_TITLE_ALREADY_EXISTS=You have already a label with the same name +TUTORIAL.MULTIPLE_TEXT_STYLES=Multiple Text Styles +TUTORIAL.DIFFERENT_SHAPES=Different Shapes +TUTORIAL.FANCY_ICONS=Fancy Icons +TUTORIAL.MOVE_WITH_ARROWS=Move Between Topics With The Arrows +TUTORIAL.START_TYPING_TO_EDIT_TEXT=Start Typing to Edit Text +TUTORIAL.CTRL_TO_ADD_CHILD=Press Ctrl/Meta+Enter to Add Child Topic +TUTORIAL.ENTER_TO_ADD_SIBLING=Press Enter to Add a Sibling Topic +TUTORIAL.MORE_KEY_TIPS=More ?. Click on shortcuts above +TUTORIAL.DOUBLE_CLICK_TO_ADD=Double Click on the Canvas to Create Topics +TUTORIAL.DRAG_AND_DROP_TO_POSITION=Drag and Drop Topics Position +TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT=Double Click on a Topic to Edit the Text +TUTORIAL.ADD_NOTES=Add Notes +TUTORIAL.USER_THE_TOOLBAR=Use the Toolbar +TUTORIAL.PUBLISH_YOUR_MAPS=Publish your Mind map +TUTORIAL.EMBED_IN_BLOGS=Embed in Blogs +TUTORIAL.INVITE_FRIEND=Invite Friends to Collaborate +TUTORIAL.SHARING=Sharing +TUTORIAL.EDITION_USING_MOUSE=Edition Using Mouse +TUTORIAL.EDITION_USING_KEYBOARD=Edition Using Keyboard +TUTORIAL.ADD_LINKS_WEBPAGES=Add Links to Web Pages +TUTORIAL.TOPIC_PROPERTIES=Topics Properties +TUTORIAL.HOW_TO_START=How to Start ? +TUTORIAL.FONT_COLOR=Color +TUTORIAL.FONT_STYLE=Styles +TUTORIAL.FONT_TYPE=Type +TUTORIAL.SAMPLE_NOTE=This is a simple note \!. +CAPTCHA_LOADING_ERROR=ReCaptcha could not be loaded. You must have access to Google ReCaptcha service. +ACCESS_HAS_BEEN_REVOKED=Your access permissions to this map has been revoked. Contact map owner. +MAP_CAN_NOT_BE_FOUND=The map can not be found. It must have been deleted. +LABEL_CAN_NOT_BE_FOUND=The label can not be found. It must have been deleted. +MINDMAP_TIMESTAMP_OUTDATED=It's not possible to save your changes because your mind map has been modified by ''{0}''. Refresh the page and try again. +MINDMAP_OUTDATED_BY_YOU=It's not possible to save your changes because map is out of date. Do you have multiple tabs opened ?. Refresh the page and try again. +MINDMAP_LOCKED=Map is being edited by {0} <{1}>. Map is opened in read only mode. +MINDMAP_IS_LOCKED=Min map is locked for edition. # Confirmed -RESET_PASSWORD_INVALID_EMAIL = The email provided is not a valid user account. Please, try again with a valid email. -TRY_WELCOME = This edition space showcases some of the mindmap editor capabilities \!. -UNEXPECTED_ERROR_DETAILS = Unexpected error processing request. +RESET_PASSWORD_INVALID_EMAIL=The email provided is not a valid user account. Please, try again with a valid email. +TRY_WELCOME=This edition space showcases some of the mind map editor capabilities \!. +UNEXPECTED_ERROR_DETAILS=Unexpected error processing request. NO_ENOUGH_PERMISSIONS=This mind map cannot be opened. NO_ENOUGH_PERMISSIONS_DETAILS=You do not have enough right access to see this map. This map has been changed to private or deleted. CAPTCHA_TIMEOUT_OUT_DUPLICATE=Please, refresh the page and try again. -CAPTCHA_INVALID_INPUT_RESPONSE="Invalid input response, refresh the page and try again. +CAPTCHA_INVALID_INPUT_RESPONSE=Invalid input response, refresh the page and try again. MINDMAP_EMPTY_ERROR=Mind map can not be empty. INVALID_MINDMAP_FORMAT=Invalid mind map format. -TOO_BIG_MINDMAP=You have reached the limit of 500 topics in a mindmap. +TOO_BIG_MINDMAP=You have reached the limit of 5000 topics in a mind map. +REGISTRATION.EMAIL_SUBJECT=Welcome to WiseMapping ! +REGISTRATION.EMAIL_TITLE=Your account has been created successfully +REGISTRATION.EMAIL_BODY=

Thank you for your interest in WiseMapping. Click here to start creating and sharing new mind maps. If have any feedback or idea, send us an email to feedback@wisemapping.com .We'd love to hear from you.

+CHANGE_PASSWORD.EMAIL_SUBJECT=Your password has been reset +CHANGE_PASSWORD.EMAIL_TITLE=A temporal password has been generated +CHANGE_PASSWORD.EMAIL_BODY=

Someone, most likely you, requested a new password for your WiseMapping account.

Here is your new password: {0}

You can login clicking here. We strongly encourage you to change the password as soon as possible.

+PASSWORD_CHANGED.EMAIL_SUBJECT=Your password has been changed +PASSWORD_CHANGED.EMAIL_TITLE=Your password has been changed successfully +PASSWORD_CHANGED.EMAIL_BODY=

This is only an notification that your password has been changed. No further action is required.

+SHARE_MAP.EMAIL_SUBJECT={0} has shared a mind map with you diff --git a/wise-webapp/src/main/resources/messages_es.properties b/wise-webapp/src/main/resources/messages_es.properties index bc69547d..7241c22e 100644 --- a/wise-webapp/src/main/resources/messages_es.properties +++ b/wise-webapp/src/main/resources/messages_es.properties @@ -6,7 +6,7 @@ EMAIL_ALREADY_EXIST = E-mail ya existente. NO_VALID_EMAIL_ADDRESS = E-mail invalido PASSWORD_MISMATCH = La contraseña no concuerda CREATOR = Creador -WELCOME = Bienvenido +WELCOME = Bienvenido/a SHARE = Compartir UNEXPECTED_ERROR = Un error inesperado ha ocurrido. MAP_TITLE_ALREADY_EXISTS = Nombre de mapa ya existente @@ -51,4 +51,18 @@ TRY_WELCOME = ¡Este espacio de edición muestra algunas de las capacidades del UNEXPECTED_ERROR_DETAILS = Error inesperado procesando tu pedido. NO_ENOUGH_PERMISSIONS=El mapa buscado no se encuentra disponible. NO_ENOUGH_PERMISSIONS_DETAILS=No tiene suficiente permisos de acceso para ver este mapa. El mapa no es mas publico o ha sido borrado. - +CAPTCHA_TIMEOUT_OUT_DUPLICATE=Por favor, actualice la página y vuelva a intentarlo. +CAPTCHA_INVALID_INPUT_RESPONSE=Respuesta ingresada no es válida, actualice la página y vuelva a intentarlo. +MINDMAP_EMPTY_ERROR=El mapa mental no puede estar vacío. +INVALID_MINDMAP_FORMAT=Formato de mapa mental no válido. +TOO_BIG_MINDMAP=Ha alcanzado el límite de 5000 temas en un mapa mental. +REGISTRATION.EMAIL_SUBJECT=Bienvenido/a a WiseMapping ! +REGISTRATION.EMAIL_TITLE=Tu cuenta ha sido creada exitosamente +REGISTRATION.EMAIL_BODY=

Gracias por tu interest en WiseMapping. Hace click aqui para empezar a crear y compatir tus mapas mentales. Ideas y sugerencias, no dudes en contactarnos a feedback@wisemapping.com.

+CHANGE_PASSWORD.EMAIL_SUBJECT=Su contraseña ha sido restablecida +CHANGE_PASSWORD.EMAIL_TITLE=Se ha generado una contraseña temporal +CHANGE_PASSWORD.EMAIL_BODY=

Alguien, muy probablemente usted, solicitó una nueva contraseña para su cuenta de WiseMapping.

Esta es su nueva contraseña: {0}

Puede iniciar sesión haciendo clic aquí . Te recomendamos que cambie la contraseña lo antes posible.

+PASSWORD_CHANGED.EMAIL_SUBJECT=Su contraseña ha sido cambiada +PASSWORD_CHANGED.EMAIL_TITLE=Su contraseña ha sido cambiada con éxito +PASSWORD_CHANGED.EMAIL_BODY=

Esto es solo una notificación de que su contraseña ha sido cambiada. No se requiere ninguna otra acción.

+SHARE_MAP.EMAIL_SUBJECT={0} te ha compartido un mapa mental diff --git a/wise-webapp/src/main/resources/messages_fr.properties b/wise-webapp/src/main/resources/messages_fr.properties index 9882ffea..c9989962 100644 --- a/wise-webapp/src/main/resources/messages_fr.properties +++ b/wise-webapp/src/main/resources/messages_fr.properties @@ -1,53 +1,68 @@ # Default English Support. -DESCRIPTION = La description -SITE.TITLE = WiseMapping -FIELD_REQUIRED = Ce champ ne peut pas rester vide -EMAIL_ALREADY_EXIST = Cet email est déjà utilisé -NO_VALID_EMAIL_ADDRESS = Email non valide -PASSWORD_MISMATCH = Le mot de passe saisi ne correspond pas -CREATOR = Créateur -WELCOME = Bienvenue -SHARE = Partager -UNEXPECTED_ERROR = Une erreur inattendue est survenue. -MAP_TITLE_ALREADY_EXISTS = Vous avez déjà une carte portant le même nom -LABEL_TITLE_ALREADY_EXISTS = You have already a label with the same name -TUTORIAL.MULTIPLE_TEXT_STYLES = Multiples Styles de Texte -TUTORIAL.DIFFERENT_SHAPES = Differentes Formes -TUTORIAL.FANCY_ICONS = Icônes fantaisie -TUTORIAL.MOVE_WITH_ARROWS = Se déplacer entre les noeuds avec les flèches -TUTORIAL.START_TYPING_TO_EDIT_TEXT = Pour éditer, commencer à taper du texte -TUTORIAL.CTRL_TO_ADD_CHILD = Appuyer sur Ctrl/Meta+Enter pour ajouter un noeud enfant -TUTORIAL.ENTER_TO_ADD_SIBLING = Appuyer sur Enter pour ajouter un noeud de même niveau -TUTORIAL.MORE_KEY_TIPS = Plus de ?. Cliquer sur les raccourcis -TUTORIAL.DOUBLE_CLICK_TO_ADD = Double-cliquez sur le canevas pour créer des sujets -TUTORIAL.DRAG_AND_DROP_TO_POSITION = Déplacer la position des noeuds -TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT = Double-cliquez sur un sujet pour modifier le texte -TUTORIAL.ADD_NOTES = Ajouter Notes -TUTORIAL.USER_THE_TOOLBAR = Utiliser la barre d'outils -TUTORIAL.PUBLISH_YOUR_MAPS = Publier votre carte -TUTORIAL.EMBED_IN_BLOGS = Encapsuler dans un blog -TUTORIAL.INVITE_FRIEND = Inviter des amis -TUTORIAL.SHARING = Partage -TUTORIAL.EDITION_USING_MOUSE = Edition avec la souris -TUTORIAL.EDITION_USING_KEYBOARD = Edition avec le clavier -TUTORIAL.ADD_LINKS_WEBPAGES = Ajouter des liens vers des pages web -TUTORIAL.TOPIC_PROPERTIES = Propriétés des noeuds -TUTORIAL.HOW_TO_START = Comment démarrer ? -TUTORIAL.FONT_COLOR = Couleurs de caractères -TUTORIAL.FONT_STYLE = Styles de caractères -TUTORIAL.FONT_TYPE = Types de caractères -TUTORIAL.SAMPLE_NOTE = Ceci est une simple note \!. -CAPTCHA_LOADING_ERROR = ReCaptcha n'a pas pu être chargé. Vous devez avoir accès au service Google ReCaptcha. -ACCESS_HAS_BEEN_REVOKED = Vos autorisations d'accès à cette carte ont été révoquées. Contacter le propriétaire de la carte. -MAP_CAN_NOT_BE_FOUND = La carte est introuvable. Il a dû être supprimé. -LABEL_CAN_NOT_BE_FOUND = L'étiquette est introuvable. Il a dû être supprimé. -MINDMAP_TIMESTAMP_OUTDATED = Il n''est pas possible d''enregistrer vos modifications car votre mindmap a été modifiée par ''{0}''. Actualisez la page et réessayez. -MINDMAP_OUTDATED_BY_YOU = Il n'est pas possible d'enregistrer vos modifications car la carte n'est pas à jour. Avez-vous plusieurs onglets ouverts ?. Actualisez la page et réessayez. -MINDMAP_LOCKED = La carte est en cours de modification par {0} <{1}>. La carte est ouverte en mode lecture seule. -MINDMAP_IS_LOCKED = Mindmap est verrouillé pour l'édition. +DESCRIPTION=La description +SITE.TITLE=WiseMapping +FIELD_REQUIRED=Ce champ ne peut pas rester vide +EMAIL_ALREADY_EXIST=Cet email est déjà utilisé +NO_VALID_EMAIL_ADDRESS=Email non valide +PASSWORD_MISMATCH=Le mot de passe saisi ne correspond pas +CREATOR=Créateur +WELCOME=Bienvenue +SHARE=Partager +UNEXPECTED_ERROR=Une erreur inattendue est survenue. +MAP_TITLE_ALREADY_EXISTS=Vous avez déjà une carte portant le même nom +LABEL_TITLE_ALREADY_EXISTS=You have already a label with the same name +TUTORIAL.MULTIPLE_TEXT_STYLES=Multiples Styles de Texte +TUTORIAL.DIFFERENT_SHAPES=Differentes Formes +TUTORIAL.FANCY_ICONS=Icônes fantaisie +TUTORIAL.MOVE_WITH_ARROWS=Se déplacer entre les noeuds avec les flèches +TUTORIAL.START_TYPING_TO_EDIT_TEXT=Pour éditer, commencer à taper du texte +TUTORIAL.CTRL_TO_ADD_CHILD=Appuyer sur Ctrl/Meta+Enter pour ajouter un noeud enfant +TUTORIAL.ENTER_TO_ADD_SIBLING=Appuyer sur Enter pour ajouter un noeud de même niveau +TUTORIAL.MORE_KEY_TIPS=Plus de ?. Cliquer sur les raccourcis +TUTORIAL.DOUBLE_CLICK_TO_ADD=Double-cliquez sur le canevas pour créer des sujets +TUTORIAL.DRAG_AND_DROP_TO_POSITION=Déplacer la position des noeuds +TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT=Double-cliquez sur un sujet pour modifier le texte +TUTORIAL.ADD_NOTES=Ajouter Notes +TUTORIAL.USER_THE_TOOLBAR=Utiliser la barre d'outils +TUTORIAL.PUBLISH_YOUR_MAPS=Publier votre carte +TUTORIAL.EMBED_IN_BLOGS=Encapsuler dans un blog +TUTORIAL.INVITE_FRIEND=Inviter des amis +TUTORIAL.SHARING=Partage +TUTORIAL.EDITION_USING_MOUSE=Edition avec la souris +TUTORIAL.EDITION_USING_KEYBOARD=Edition avec le clavier +TUTORIAL.ADD_LINKS_WEBPAGES=Ajouter des liens vers des pages web +TUTORIAL.TOPIC_PROPERTIES=Propriétés des noeuds +TUTORIAL.HOW_TO_START=Comment démarrer ? +TUTORIAL.FONT_COLOR=Couleurs de caractères +TUTORIAL.FONT_STYLE=Styles de caractères +TUTORIAL.FONT_TYPE=Types de caractères +TUTORIAL.SAMPLE_NOTE=Ceci est une simple note \!. +CAPTCHA_LOADING_ERROR=ReCaptcha n'a pas pu être chargé. Vous devez avoir accès au service Google ReCaptcha. +ACCESS_HAS_BEEN_REVOKED=Vos autorisations d'accès à cette carte ont été révoquées. Contacter le propriétaire de la carte. +MAP_CAN_NOT_BE_FOUND=La carte est introuvable. Il a dû être supprimé. +LABEL_CAN_NOT_BE_FOUND=L'étiquette est introuvable. Il a dû être supprimé. +MINDMAP_TIMESTAMP_OUTDATED=Il n''est pas possible d''enregistrer vos modifications car votre mindmap a été modifiée par ''{0}''. Actualisez la page et réessayez. +MINDMAP_OUTDATED_BY_YOU=Il n'est pas possible d'enregistrer vos modifications car la carte n'est pas à jour. Avez-vous plusieurs onglets ouverts ?. Actualisez la page et réessayez. +MINDMAP_LOCKED=La carte est en cours de modification par {0} <{1}>. La carte est ouverte en mode lecture seule. +MINDMAP_IS_LOCKED=Mindmap est verrouillé pour l'édition. # Confirmed -RESET_PASSWORD_INVALID_EMAIL = L'e-mail fourni n'est pas un compte d'utilisateur valide. Veuillez réessayer avec un e-mail valide. -TRY_WELCOME = Cet espace d'édition présente certaines des fonctionnalités de l'éditeur de cartes mentales \!. -UNEXPECTED_ERROR_DETAILS = Erreur inattendue lors du traitement de la demande. +RESET_PASSWORD_INVALID_EMAIL=L'e-mail fourni n'est pas un compte d'utilisateur valide. Veuillez réessayer avec un e-mail valide. +TRY_WELCOME=Cet espace d'édition présente certaines des fonctionnalités de l'éditeur de cartes mentales \!. +UNEXPECTED_ERROR_DETAILS=Erreur inattendue lors du traitement de la demande. NO_ENOUGH_PERMISSIONS=Cette carte n'est plus accessible. NO_ENOUGH_PERMISSIONS_DETAILS=Vous n'avez pas les droits d'accès suffisants pour voir cette carte. Cette carte est devenue privée, ou a été détruite. +REGISTRATION.EMAIL_SUBJECT=Bienvenue sur WiseMapping ! +REGISTRATION.EMAIL_TITLE=Votre compte a été créé avec succès +REGISTRATION.EMAIL_BODY=

Merci de l'intérêt que vous portez à WiseMapping. Cliquez ici pour commencer à créer et partager de nouvelles cartes mentales. Si vous avez des commentaires ou des idées, envoyez-nous un e-mail à feedback@wisemapping.com. Nous aimerions avoir de vos nouvelles.

+CHANGE_PASSWORD.EMAIL_SUBJECT=Votre mot de passe a été réinitialisé +CHANGE_PASSWORD.EMAIL_TITLE=Un mot de passe temporaire a été généré +CHANGE_PASSWORD.EMAIL_BODY=

Quelqu'un, probablement vous, a demandé un nouveau mot de passe pour votre compte WiseMapping.

Voici votre nouveau mot de passe : {0}

Vous pouvez vous connecter en cliquant sur ici . Nous vous recommandons de changer votre mot de passe dès que possible.

+PASSWORD_CHANGED.EMAIL_SUBJECT=Votre mot de passe a été changé +PASSWORD_CHANGED.EMAIL_TITLE=Votre mot de passe a été changé avec succès +PASSWORD_CHANGED.EMAIL_BODY=

Il s'agit simplement d'une notification indiquant que votre mot de passe a été modifié. Aucune autre action n'est requise.

+CAPTCHA_TIMEOUT_OUT_DUPLICATE=Veuillez actualiser la page et réessayer. +CAPTCHA_INVALID_INPUT_RESPONSE=Réponse d'entrée non valide, actualisez la page et réessayez. +MINDMAP_EMPTY_ERROR=La carte mentale ne peut pas être vide. +INVALID_MINDMAP_FORMAT=Format de carte mentale non valide. +TOO_BIG_MINDMAP=Vous avez atteint la limite de 5000 sujets dans une carte mentale. +SHARE_MAP.EMAIL_SUBJECT={0} a partagé une carte mentale avec vous diff --git a/wise-webapp/src/main/resources/messages_ru.properties b/wise-webapp/src/main/resources/messages_ru.properties index 0c122588..0d29b9e2 100644 --- a/wise-webapp/src/main/resources/messages_ru.properties +++ b/wise-webapp/src/main/resources/messages_ru.properties @@ -1,58 +1,63 @@ # Default English Support. -DESCRIPTION = Описание -SITE.TITLE = WiseMapping -FIELD_REQUIRED = Это поле обязательно для заполненияю -EMAIL_ALREADY_EXIST = Аккаунт с таким e-mail уже существует. -NO_VALID_EMAIL_ADDRESS = Некорректный адрес электронной почты. -PASSWORD_MISMATCH = Пароли не совпадают -CREATOR = Создатель -WELCOME = Добро пожаловать -SHARE = Поделиться -UNEXPECTED_ERROR = Что-то пошло не так. -MAP_TITLE_ALREADY_EXISTS = Карта с таким именем уже существует -LABEL_TITLE_ALREADY_EXISTS = Метка с таким именем уже существует -TUTORIAL.MULTIPLE_TEXT_STYLES = Разные стили текста -TUTORIAL.DIFFERENT_SHAPES = Разные Формы -TUTORIAL.FANCY_ICONS = Симпатичные Иконки -TUTORIAL.MOVE_WITH_ARROWS = Перемещение по карте стрелками -TUTORIAL.START_TYPING_TO_EDIT_TEXT = Начните печатать, чтобы отредактировать -TUTORIAL.CTRL_TO_ADD_CHILD = Ctrl/Meta+Enter чтобы добавить подтему -TUTORIAL.ENTER_TO_ADD_SIBLING = Enter чтобы добавить тему того же уровне -TUTORIAL.MORE_KEY_TIPS = А еще ?. Нажми на Shortcuts ниже -TUTORIAL.DOUBLE_CLICK_TO_ADD = Для создания темы - двойной клик по холсту -TUTORIAL.DRAG_AND_DROP_TO_POSITION = Темы и ветки можно перетаскивать -TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT = Двойной клик - редактирование темы -TUTORIAL.ADD_NOTES = Добавление заметок -TUTORIAL.USER_THE_TOOLBAR = Панель инструметов -TUTORIAL.PUBLISH_YOUR_MAPS = Публикация своих майнд-карты -TUTORIAL.EMBED_IN_BLOGS = Возможность встроить в блог -TUTORIAL.INVITE_FRIEND = Пригласи друзей -TUTORIAL.SHARING = Доступ -TUTORIAL.EDITION_USING_MOUSE = Редактирование мышью -TUTORIAL.EDITION_USING_KEYBOARD = Редактирование с клавиатуры -TUTORIAL.ADD_LINKS_WEBPAGES = Добавление ссылок на веб-страницы -TUTORIAL.TOPIC_PROPERTIES = Свойства темы -TUTORIAL.HOW_TO_START = Как начать ? -TUTORIAL.FONT_COLOR = Цвет -TUTORIAL.FONT_STYLE = Стили -TUTORIAL.FONT_TYPE = Type -TUTORIAL.SAMPLE_NOTE = Это просто заметка\!. -CAPTCHA_LOADING_ERROR = ReCaptcha не загружается. Должен быть доступ к сервису Google ReCaptcha. -ACCESS_HAS_BEEN_REVOKED = Ваш доступ к карте был отозван. Обратитесь к владельцу. -MAP_CAN_NOT_BE_FOUND = Карта не найдена. Вероятно, она удалена. -LABEL_CAN_NOT_BE_FOUND = Метка не найдена. Вероятно, она удалена. -MINDMAP_TIMESTAMP_OUTDATED = Невозможно сохранить, карта была изменена ''{0}''. Обновите страницу и попробуйте еще раз. -MINDMAP_OUTDATED_BY_YOU = Невозможно сохранить - карта устарела. У вас открыто несколько вкладок браузера?. Обновите страницу и попробуйте еще раз. -MINDMAP_LOCKED = Карта редактируется {0} <{1}>. Карта открыта в режиме чтения. -MINDMAP_IS_LOCKED = Карта доступна только для просмотра. +DESCRIPTION=Описание +SITE.TITLE=WiseMapping +FIELD_REQUIRED=Это поле обязательно для заполненияю +EMAIL_ALREADY_EXIST=Аккаунт с таким e-mail уже существует. +NO_VALID_EMAIL_ADDRESS=Некорректный адрес электронной почты. +PASSWORD_MISMATCH=Пароли не совпадают +CREATOR=Создатель +WELCOME=Добро пожаловать +SHARE=Поделиться +UNEXPECTED_ERROR=Что-то пошло не так. +MAP_TITLE_ALREADY_EXISTS=Карта с таким именем уже существует +LABEL_TITLE_ALREADY_EXISTS=Метка с таким именем уже существует +TUTORIAL.MULTIPLE_TEXT_STYLES=Разные стили текста +TUTORIAL.DIFFERENT_SHAPES=Разные Формы +TUTORIAL.FANCY_ICONS=Симпатичные Иконки +TUTORIAL.MOVE_WITH_ARROWS=Перемещение по карте стрелками +TUTORIAL.START_TYPING_TO_EDIT_TEXT=Начните печатать, чтобы отредактировать +TUTORIAL.CTRL_TO_ADD_CHILD=Ctrl/Meta+Enter чтобы добавить подтему +TUTORIAL.ENTER_TO_ADD_SIBLING=Enter чтобы добавить тему того же уровне +TUTORIAL.MORE_KEY_TIPS=А еще ?. Нажми на Shortcuts ниже +TUTORIAL.DOUBLE_CLICK_TO_ADD=Для создания темы - двойной клик по холсту +TUTORIAL.DRAG_AND_DROP_TO_POSITION=Темы и ветки можно перетаскивать +TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT=Двойной клик - редактирование темы +TUTORIAL.ADD_NOTES=Добавление заметок +TUTORIAL.USER_THE_TOOLBAR=Панель инструметов +TUTORIAL.PUBLISH_YOUR_MAPS=Публикация своих майнд-карты +TUTORIAL.EMBED_IN_BLOGS=Возможность встроить в блог +TUTORIAL.INVITE_FRIEND=Пригласи друзей +TUTORIAL.SHARING=Доступ +TUTORIAL.EDITION_USING_MOUSE=Редактирование мышью +TUTORIAL.EDITION_USING_KEYBOARD=Редактирование с клавиатуры +TUTORIAL.ADD_LINKS_WEBPAGES=Добавление ссылок на веб-страницы +TUTORIAL.TOPIC_PROPERTIES=Свойства темы +TUTORIAL.HOW_TO_START=Как начать ? +TUTORIAL.FONT_COLOR=Цвет +TUTORIAL.FONT_STYLE=Стили +TUTORIAL.FONT_TYPE=Type +TUTORIAL.SAMPLE_NOTE=Это просто заметка\!. +CAPTCHA_LOADING_ERROR=ReCaptcha не загружается. Должен быть доступ к сервису Google ReCaptcha. +ACCESS_HAS_BEEN_REVOKED=Ваш доступ к карте был отозван. Обратитесь к владельцу. +MAP_CAN_NOT_BE_FOUND=Карта не найдена. Вероятно, она удалена. +LABEL_CAN_NOT_BE_FOUND=Метка не найдена. Вероятно, она удалена. +MINDMAP_TIMESTAMP_OUTDATED=Невозможно сохранить, карта была изменена ''{0}''. Обновите страницу и попробуйте еще раз. +MINDMAP_OUTDATED_BY_YOU=Невозможно сохранить - карта устарела. У вас открыто несколько вкладок браузера?. Обновите страницу и попробуйте еще раз. +MINDMAP_LOCKED=Карта редактируется {0} <{1}>. Карта открыта в режиме чтения. +MINDMAP_IS_LOCKED=Карта доступна только для просмотра. # Confirmed -RESET_PASSWORD_INVALID_EMAIL = Указанный адрес не связан с аккаунтом пользователя. Укажите корректный адрес. -TRY_WELCOME = Здесь можно ознакомиться с возможностями нашего редактора майнд-карт на примерах и практике \!. -UNEXPECTED_ERROR_DETAILS = Что-то пошло не так при обработке запроса. +RESET_PASSWORD_INVALID_EMAIL=Указанный адрес не связан с аккаунтом пользователя. Укажите корректный адрес. +TRY_WELCOME=Здесь можно ознакомиться с возможностями нашего редактора майнд-карт на примерах и практике \!. +UNEXPECTED_ERROR_DETAILS=Что-то пошло не так при обработке запроса. NO_ENOUGH_PERMISSIONS=Эта майнд-карта недоступна. NO_ENOUGH_PERMISSIONS_DETAILS=У вас нет доступа к этой карте. Карта либо удалена, либо стала приватной. CAPTCHA_TIMEOUT_OUT_DUPLICATE=Пожалуйста, обновите страницу и повторите попытку. CAPTCHA_INVALID_INPUT_RESPONSE="Неверная CAPTCHA, обновите страницу и повторите попытку. MINDMAP_EMPTY_ERROR=Карта не может быть пустой. INVALID_MINDMAP_FORMAT=Недопустимый формат карты. -TOO_BIG_MINDMAP= Слишком большая карта - вы достигли лимита в 500 тем. +TOO_BIG_MINDMAP=Слишком большая карта - вы достигли лимита в 500 тем. +REGISTRATION.EMAIL_SUBJECT=Добро пожаловать в WiseMapping! +REGISTRATION.EMAIL_TITLE=Ваша учетная запись успешно создана +REGISTRATION.EMAIL_BODY=

Благодарим вас за интерес к WiseMapping. Нажмите здесь, чтобы начать создавать и публиковать новые интеллект-карты. Если у вас есть какие-либо отзывы или идеи, отправьте нам электронное письмо по адресу feedback@wisemapping.com. Мы будем рады услышать от вас.

+SHARE_MAP.EMAIL_SUBJECT={0} has shared a mindmap with you + diff --git a/wise-webapp/src/main/resources/messages_zh.properties b/wise-webapp/src/main/resources/messages_zh.properties index d4b5bf90..417e7599 100644 --- a/wise-webapp/src/main/resources/messages_zh.properties +++ b/wise-webapp/src/main/resources/messages_zh.properties @@ -1,58 +1,69 @@ # Default English Support. -DESCRIPTION = 描述 -SITE.TITLE = WiseMapping -FIELD_REQUIRED = 必填字段不能为空 -EMAIL_ALREADY_EXIST = 已经有一个账号使用此电子邮件。 -NO_VALID_EMAIL_ADDRESS = 无效的电子邮件地址 -PASSWORD_MISMATCH = 您输入的密码不一致 -CREATOR = 创建人 -WELCOME = 欢迎 -SHARE = 分享 -UNEXPECTED_ERROR = 发生了意外错误。 -MAP_TITLE_ALREADY_EXISTS = 你已经有同名脑图了 -LABEL_TITLE_ALREADY_EXISTS = 你已经有一个同名的标签了 -TUTORIAL.MULTIPLE_TEXT_STYLES = 多种文本样式 -TUTORIAL.DIFFERENT_SHAPES = 不同形状 -TUTORIAL.FANCY_ICONS = 炫酷图标 -TUTORIAL.MOVE_WITH_ARROWS = 使用方向键在主题之间移动 -TUTORIAL.START_TYPING_TO_EDIT_TEXT = 开始键入编辑文本 -TUTORIAL.CTRL_TO_ADD_CHILD = 按Ctrl/Meta+Enter添加子主题 -TUTORIAL.ENTER_TO_ADD_SIBLING = 按回车键添加并行主题 -TUTORIAL.MORE_KEY_TIPS = 更多?点击上面的快捷方式 -TUTORIAL.DOUBLE_CLICK_TO_ADD = 双击画布创建主题 -TUTORIAL.DRAG_AND_DROP_TO_POSITION = 拖放主题位置 -TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT = 双击主题编辑文本 -TUTORIAL.ADD_NOTES = 添加注释 -TUTORIAL.USER_THE_TOOLBAR = 使用工具栏 -TUTORIAL.PUBLISH_YOUR_MAPS = 发布你的思维导图 -TUTORIAL.EMBED_IN_BLOGS = 嵌入博客 -TUTORIAL.INVITE_FRIEND = 邀请朋友协作 -TUTORIAL.SHARING = 分享 -TUTORIAL.EDITION_USING_MOUSE = 使用鼠标编辑 -TUTORIAL.EDITION_USING_KEYBOARD = 使用键盘编辑 -TUTORIAL.ADD_LINKS_WEBPAGES = 添加网页链接 -TUTORIAL.TOPIC_PROPERTIES = 主题属性 -TUTORIAL.HOW_TO_START = 如何开始? -TUTORIAL.FONT_COLOR = 颜色 -TUTORIAL.FONT_STYLE = 样式 -TUTORIAL.FONT_TYPE = 类型 -TUTORIAL.SAMPLE_NOTE = 这是一个简单的注释\!。 -CAPTCHA_LOADING_ERROR = 无法加载ReCaptcha。您必须能够访问Google ReCaptcha服务。 -ACCESS_HAS_BEEN_REVOKED = 您对该脑图的访问权限已被撤销。联系脑图所有人。 -MAP_CAN_NOT_BE_FOUND = 找不到该脑图,应该是被删除了。 -LABEL_CAN_NOT_BE_FOUND = 找不到该标签,应该是被删除了。 -MINDMAP_TIMESTAMP_OUTDATED =无法保存您的更改,因为您的思维导图已被''{0}''修改。刷新页面,然后重试。 -MINDMAP_OUTDATED_BY_YOU = 无法保存您的更改,因为脑图已经过期。您打开了多个页面吗?刷新页面,然后重试。 -MINDMAP_LOCKED = 脑图正在被{0}<{1}>编辑。脑图以只读模式打开。 -MINDMAP_IS_LOCKED = 脑图被锁定编辑。 +DESCRIPTION=描述 +SITE.TITLE=WiseMapping +FIELD_REQUIRED=必填字段不能为空 +EMAIL_ALREADY_EXIST=已经有一个账号使用此电子邮件。 +NO_VALID_EMAIL_ADDRESS=无效的电子邮件地址 +PASSWORD_MISMATCH=您输入的密码不一致 +CREATOR=创建人 +WELCOME=欢迎 +SHARE=分享 +UNEXPECTED_ERROR=发生了意外错误。 +MAP_TITLE_ALREADY_EXISTS=你已经有同名脑图了 +LABEL_TITLE_ALREADY_EXISTS=你已经有一个同名的标签了 +TUTORIAL.MULTIPLE_TEXT_STYLES=多种文本样式 +TUTORIAL.DIFFERENT_SHAPES=不同形状 +TUTORIAL.FANCY_ICONS=炫酷图标 +TUTORIAL.MOVE_WITH_ARROWS=使用方向键在主题之间移动 +TUTORIAL.START_TYPING_TO_EDIT_TEXT=开始键入编辑文本 +TUTORIAL.CTRL_TO_ADD_CHILD=按Ctrl/Meta+Enter添加子主题 +TUTORIAL.ENTER_TO_ADD_SIBLING=按回车键添加并行主题 +TUTORIAL.MORE_KEY_TIPS=更多?点击上面的快捷方式 +TUTORIAL.DOUBLE_CLICK_TO_ADD=双击画布创建主题 +TUTORIAL.DRAG_AND_DROP_TO_POSITION=拖放主题位置 +TUTORIAL.DOUBLE_CLICK_TO_EDIT_TEXT=双击主题编辑文本 +TUTORIAL.ADD_NOTES=添加注释 +TUTORIAL.USER_THE_TOOLBAR=使用工具栏 +TUTORIAL.PUBLISH_YOUR_MAPS=发布你的思维导图 +TUTORIAL.EMBED_IN_BLOGS=嵌入博客 +TUTORIAL.INVITE_FRIEND=邀请朋友协作 +TUTORIAL.SHARING=分享 +TUTORIAL.EDITION_USING_MOUSE=使用鼠标编辑 +TUTORIAL.EDITION_USING_KEYBOARD=使用键盘编辑 +TUTORIAL.ADD_LINKS_WEBPAGES=添加网页链接 +TUTORIAL.TOPIC_PROPERTIES=主题属性 +TUTORIAL.HOW_TO_START=如何开始? +TUTORIAL.FONT_COLOR=颜色 +TUTORIAL.FONT_STYLE=样式 +TUTORIAL.FONT_TYPE=类型 +TUTORIAL.SAMPLE_NOTE=这是一个简单的注释! +CAPTCHA_LOADING_ERROR=无法加载ReCaptcha。您必须能够访问Google ReCaptcha服务。 +ACCESS_HAS_BEEN_REVOKED=您对该脑图的访问权限已被撤销。联系脑图所有人。 +MAP_CAN_NOT_BE_FOUND=找不到该脑图,应该是被删除了。 +LABEL_CAN_NOT_BE_FOUND=找不到该标签,应该是被删除了。 +MINDMAP_TIMESTAMP_OUTDATED=无法保存您的更改,因为您的思维导图已被''{0}''修改。刷新页面,然后重试。 +MINDMAP_OUTDATED_BY_YOU=无法保存您的更改,因为脑图已经过期。您打开了多个页面吗?刷新页面,然后重试。 +MINDMAP_LOCKED=脑图正在被{0}<{1}>编辑。脑图以只读模式打开。 +MINDMAP_IS_LOCKED=脑图被锁定编辑。 # Confirmed -RESET_PASSWORD_INVALID_EMAIL = 提供的电子邮件不是有效的用户账号。请使用有效的电子邮件重试。 -TRY_WELCOME = This edition space showcases some of the mindmap editor capabilities \!.此编辑区域展示了一些思维导图编辑器的功能\!。 -UNEXPECTED_ERROR_DETAILS = 处理请求时遇到意外错误。 +RESET_PASSWORD_INVALID_EMAIL=提供的电子邮件不是有效的用户账号。请使用有效的电子邮件重试。 +TRY_WELCOME=此编辑区域展示了一些思维导图编辑器的功能! +UNEXPECTED_ERROR_DETAILS=处理请求时遇到意外错误。 NO_ENOUGH_PERMISSIONS=无法打开思维导图。 NO_ENOUGH_PERMISSIONS_DETAILS=您没有足够的权限查看此脑图。此脑图已更改为私有或被删除。 CAPTCHA_TIMEOUT_OUT_DUPLICATE=请刷新页面,然后重试。 -CAPTCHA_INVALID_INPUT_RESPONSE="输入无效,刷新页面后重试。 +CAPTCHA_INVALID_INPUT_RESPONSE=输入无效,刷新页面后重试。 MINDMAP_EMPTY_ERROR=思维导图不能为空。 INVALID_MINDMAP_FORMAT=思维导图格式无效。 -TOO_BIG_MINDMAP=你已经达到了一张思维导图中500个主题的限制。 \ No newline at end of file +TOO_BIG_MINDMAP=你已经达到了一张思维导图中500个主题的限制。 +REGISTRATION.EMAIL_SUBJECT=欢迎来到智慧地图 +REGISTRATION.EMAIL_TITLE=您的帐户已成功创建 +REGISTRATION.EMAIL_BODY=

感谢您对 WiseMapping 的关注。点击这里开始创建和分享新的思维导图。如果有任何反馈或想法,请给我们发送电子邮件至 feedback@wisemapping.com。我们很乐意听取您的意见。

+CHANGE_PASSWORD.EMAIL_SUBJECT=您的密码已重置 +CHANGE_PASSWORD.EMAIL_TITLE=已生成临时密码 +CHANGE_PASSWORD.EMAIL_BODY=

有人(很可能是您)为您的 WiseMapping 帐户申请了新密码。

这是您的新密码:{0}

您可以点击此处登录。我们强烈建议您尽快更改密码

+PASSWORD_CHANGED.EMAIL_SUBJECT=您的密码已被更改 +PASSWORD_CHANGED.EMAIL_TITLE=你已经成功更改密码 +PASSWORD_CHANGED.EMAIL_BODY=

这只是您的密码已更改的通知。无需进一步操作。

+SHARE_MAP.EMAIL_SUBJECT={0} 与您分享了一张思维导图 + diff --git a/wise-webapp/src/main/webapp/WEB-INF/app.properties b/wise-webapp/src/main/webapp/WEB-INF/app.properties index 846700d5..3cf6d17c 100755 --- a/wise-webapp/src/main/webapp/WEB-INF/app.properties +++ b/wise-webapp/src/main/webapp/WEB-INF/app.properties @@ -89,9 +89,7 @@ google.recaptcha2.secretKey = 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe admin.user = admin@wisemapping.org # Base URL where WiseMapping is deployed. By default, It will be automatically inferred. -# If you are planning to put wisemapping behind an Apache using an Apache Proxy setup, you must enable this property. -#site.baseurl = http://example.com:8080/wisemapping - +site.baseurl = http://localhost:8080 # Site Homepage URL. This will be used as URL for homepage location. site.homepage = c/login diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-service.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-service.xml index dc4eaba7..73d24756 100755 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-service.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-service.xml @@ -82,9 +82,9 @@ - ${mail.smtp.auth} - ${mail.smtp.starttls.enable} - ${mail.smtp.quitwait} + ${mail.smtp.auth:false} + ${mail.smtp.starttls.enable:false} + ${mail.smtp.quitwait:true} @@ -93,9 +93,9 @@ - + - + diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-servlet.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-servlet.xml index 62da4794..29e70142 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-servlet.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-servlet.xml @@ -22,30 +22,25 @@ - + + + - - securityError + + securityError + securityError - - 200 + 403 - - - - java.lang.reflect.UndeclaredThrowableException - - - diff --git a/wise-webapp/src/main/webapp/css/error.css b/wise-webapp/src/main/webapp/css/error.css index 34fe7a9f..4148f9b0 100644 --- a/wise-webapp/src/main/webapp/css/error.css +++ b/wise-webapp/src/main/webapp/css/error.css @@ -1,5 +1,3 @@ -@import "compatibility.css"; - div#errorContainer { font-family:Helvetica; display: flex; diff --git a/wise-webapp/src/main/webapp/jsp/mindmapEditor.jsp b/wise-webapp/src/main/webapp/jsp/mindmapEditor.jsp index fe9613de..637bf2cb 100644 --- a/wise-webapp/src/main/webapp/jsp/mindmapEditor.jsp +++ b/wise-webapp/src/main/webapp/jsp/mindmapEditor.jsp @@ -33,8 +33,6 @@