mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-09 19:06:49 +08:00
提交
This commit is contained in:
@@ -29,6 +29,26 @@
|
|||||||
<groupId>javax.servlet</groupId>
|
<groupId>javax.servlet</groupId>
|
||||||
<artifactId>javax.servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-validator</groupId>
|
||||||
|
<artifactId>commons-validator</artifactId>
|
||||||
|
<version>1.6</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>2.6</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>dom4j</groupId>
|
||||||
|
<artifactId>dom4j</artifactId>
|
||||||
|
<version>1.6.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.sourceforge.cardme</groupId>
|
||||||
|
<artifactId>cardme</artifactId>
|
||||||
|
<version>0.4.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
package com.xboe.module.scorm.common;
|
||||||
|
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
public class CommonUtils {
|
||||||
|
|
||||||
|
private static final Set<String> LANGUAGE_CODES = new HashSet<>(Arrays.asList(Locale.getISOLanguages()));
|
||||||
|
private static final Set<String> LANGUAGE_SUBCODES = new HashSet<>(Arrays.asList(Locale.getISOCountries()));
|
||||||
|
|
||||||
|
static {
|
||||||
|
Set<String> iso3 = new HashSet<>();
|
||||||
|
for (String languageCode : LANGUAGE_CODES) {
|
||||||
|
try {
|
||||||
|
iso3.add(new Locale(languageCode).getISO3Language());
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LANGUAGE_CODES.addAll(iso3);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String stringifyError(Throwable error) {
|
||||||
|
StringWriter result = new StringWriter();
|
||||||
|
PrintWriter printer = new PrintWriter(result);
|
||||||
|
error.printStackTrace(printer);
|
||||||
|
printer.close();
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String format(String format, Object... objects) {
|
||||||
|
return String.format(format.replace("{}", "%s"), objects);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isLegalLanguage(String language) {
|
||||||
|
if (StringUtils.isBlank(language)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String[] code = language.split("-");
|
||||||
|
boolean result;
|
||||||
|
if (code.length == 1 || code.length == 2) {
|
||||||
|
result = LANGUAGE_CODES.contains(code[0]);
|
||||||
|
if (code.length == 2) {
|
||||||
|
result &= LANGUAGE_SUBCODES.contains(code[1]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result = false;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isLegalURI(String uri) {
|
||||||
|
try {
|
||||||
|
//noinspection ResultOfMethodCallIgnored
|
||||||
|
URI.create(uri);
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isLegalTime(String time) {
|
||||||
|
try {
|
||||||
|
Instant.parse(time);
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isLegalDuration(String duration) {
|
||||||
|
try {
|
||||||
|
Duration.parse(duration);
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package com.xboe.module.scorm.common;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
|
||||||
|
public final class ID {
|
||||||
|
|
||||||
|
private final String identifier;
|
||||||
|
|
||||||
|
private final String lmsContentPackageID;
|
||||||
|
|
||||||
|
private final String lmsLearnerID;
|
||||||
|
|
||||||
|
public ID(String identifier, String lmsContentPackageID, String lmsLearnerID) {
|
||||||
|
this.identifier = identifier;
|
||||||
|
this.lmsContentPackageID = lmsContentPackageID;
|
||||||
|
this.lmsLearnerID = lmsLearnerID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final String getIdentifier() {
|
||||||
|
return identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final String getLmsContentPackageID() {
|
||||||
|
return lmsContentPackageID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final String getLmsLearnerID() {
|
||||||
|
return lmsLearnerID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
|
||||||
|
ID id = (ID) o;
|
||||||
|
|
||||||
|
return new EqualsBuilder()
|
||||||
|
.append(identifier, id.identifier)
|
||||||
|
.append(lmsContentPackageID, id.lmsContentPackageID)
|
||||||
|
.append(lmsLearnerID, id.lmsLearnerID)
|
||||||
|
.isEquals();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return new HashCodeBuilder(17, 37)
|
||||||
|
.append(identifier)
|
||||||
|
.append(lmsContentPackageID)
|
||||||
|
.append(lmsLearnerID)
|
||||||
|
.toHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this)
|
||||||
|
.append("identifier", identifier)
|
||||||
|
.append("lmsContentPackageID", lmsContentPackageID)
|
||||||
|
.append("lmsLearnerID", lmsLearnerID)
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.xboe.module.scorm.common;
|
||||||
|
|
||||||
|
public interface LMSPersistDriver {
|
||||||
|
|
||||||
|
String querySCORMPackageZipFilePathBy(String lmsContentPackageID);
|
||||||
|
|
||||||
|
int queryActivityAttemptCountBy(String lmsContentPackageID, String activityID, String learnerID);
|
||||||
|
|
||||||
|
void saveActivityAttemptCount(String lmsContentPackageID, String activityID, String learnerID, int attemptCount);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.xboe.module.scorm.common;
|
||||||
|
|
||||||
|
public class LMSPersistDriverManager {
|
||||||
|
|
||||||
|
private static LMSPersistDriverManager instance;
|
||||||
|
|
||||||
|
private LMSPersistDriver driver;
|
||||||
|
|
||||||
|
private LMSPersistDriverManager() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LMSPersistDriverManager getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
synchronized (LMSPersistDriverManager.class) {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new LMSPersistDriverManager();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerDriver(LMSPersistDriver lmsPersistDriver) {
|
||||||
|
this.driver = lmsPersistDriver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LMSPersistDriver getDriver() {
|
||||||
|
return driver;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user