Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Internationalization - Application Terms of Use #6042

Merged
merged 8 commits into from
Sep 11, 2019
13 changes: 13 additions & 0 deletions scripts/database/upgrades/upgrade_v4.15.1_to.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
ALTER TABLE ONLY setting DROP CONSTRAINT setting_pkey ;

ALTER TABLE setting ADD COLUMN ID SERIAL PRIMARY KEY;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this add values for the id for existing settings? (it must, right?)

Also, can you update the file name to reference 4.16 (the latest release?)

Copy link
Contributor Author

@JayanthyChengan JayanthyChengan Sep 5, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@scolapasta - Yes, it adds serial number to all existing rows. I will rename the file and commit it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

committed the changes.


ALTER TABLE setting ADD COLUMN lang text;

ALTER TABLE setting
ADD CONSTRAINT non_empty_lang
CHECK (lang <> '');

CREATE UNIQUE INDEX unique_settings
ON setting
(name, coalesce(lang, ''));
14 changes: 14 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/api/Admin.java
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,13 @@ public Response putSetting(@PathParam("name") String name, String content) {
return ok(jsonObjectBuilder().add(s.getName(), s.getContent()));
}

@Path("settings/{name}/lang/{lang}")
@PUT
public Response putSetting(@PathParam("name") String name, @PathParam("lang") String lang, String content) {
Setting s = settingsSvc.set(name, lang, content);
return ok("Setting " + name + " - " + lang + " - added.");
}

@Path("settings/{name}")
@GET
public Response getSetting(@PathParam("name") String name) {
Expand All @@ -172,6 +179,13 @@ public Response deleteSetting(@PathParam("name") String name) {
return ok("Setting " + name + " deleted.");
}

@Path("settings/{name}/lang/{lang}")
@DELETE
public Response deleteSetting(@PathParam("name") String name, @PathParam("lang") String lang) {
settingsSvc.delete(name, lang);
return ok("Setting " + name + " - " + lang + " deleted.");
}

@Path("authenticationProviderFactories")
@GET
public Response listAuthProviderFactories() {
Expand Down
36 changes: 33 additions & 3 deletions src/main/java/edu/harvard/iq/dataverse/settings/Setting.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,54 @@
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;

/**
* A single value in the config of dataverse.
* @author michael
*/
@NamedQueries({
@NamedQuery( name="Setting.deleteByName",
query="DELETE FROM Setting s WHERE s.name=:name"),
query="DELETE FROM Setting s WHERE s.name=:name AND s.lang IS NULL"),
@NamedQuery( name="Setting.findAll",
query="SELECT s FROM Setting s")
query="SELECT s FROM Setting s"),
@NamedQuery( name="Setting.findByName",
query = "SELECT s FROM Setting s WHERE s.name=:name AND s.lang IS NULL" ),
@NamedQuery( name="Setting.deleteByNameAndLang",
query="DELETE FROM Setting s WHERE s.name=:name AND s.lang=:lang"),
@NamedQuery( name="Setting.findByNameAndLang",
query = "SELECT s FROM Setting s WHERE s.name=:name AND s.lang=:lang" )

})
@Entity
public class Setting implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(columnDefinition = "TEXT")
private String name;

@Column(columnDefinition = "TEXT")
private String lang;

@Column(columnDefinition = "TEXT")
private String content;

public Setting() {
}

public Setting(String name, String content) {
this.name = name;
this.content = content;
}

public Setting(String name, String lang, String content) {
this.name = name;
this.content = content;
this.lang = lang;
}

public String getName() {
Expand All @@ -51,6 +73,14 @@ public void setContent(String content) {
this.content = content;
}

public String getLang() {
return lang;
}

public void setLang(String lang) {
this.lang = lang;
}

@Override
public int hashCode() {
int hash = 7;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import edu.harvard.iq.dataverse.api.ApiBlockingFilter;
import edu.harvard.iq.dataverse.util.StringUtil;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand Down Expand Up @@ -429,8 +430,14 @@ public String toString() {
* @return the actual setting, or {@code null}.
*/
public String get( String name ) {
Setting s = em.find( Setting.class, name );
return (s!=null) ? s.getContent() : null;
List<Setting> tokens = em.createNamedQuery("Setting.findByName", Setting.class)
.setParameter("name", name )
.getResultList();
String val = null;
if(tokens.size() > 0) {
val = tokens.get(0).getContent();
}
return (val!=null) ? val : null;
}

/**
Expand Down Expand Up @@ -483,10 +490,26 @@ public String get( String name, String defaultValue ) {
String val = get(name);
return (val!=null) ? val : defaultValue;
}

public String get(String name, String lang, String defaultValue ) {
List<Setting> tokens = em.createNamedQuery("Setting.findByNameAndLang", Setting.class)
.setParameter("name", name )
.setParameter("lang", lang )
.getResultList();
String val = null;
if(tokens.size() > 0) {
val = tokens.get(0).getContent();
}
return (val!=null) ? val : defaultValue;
}

public String getValueForKey( Key key, String defaultValue ) {
return get( key.toString(), defaultValue );
}

public String getValueForKey( Key key, String lang, String defaultValue ) {
return get( key.toString(), lang, defaultValue );
}

public Setting set( String name, String content ) {
Setting s = new Setting( name, content );
Expand All @@ -495,6 +518,14 @@ public Setting set( String name, String content ) {
.setInfo(name + ": " + content));
return s;
}

public Setting set( String name, String lang, String content ) {
Setting s = new Setting( name, lang, content );
em.merge(s);
actionLogSvc.log( new ActionLogRecord(ActionLogRecord.ActionType.Setting, "set")
.setInfo(name + ": " +lang + ": " + content));
return s;
}

public Setting setValueForKey( Key key, String content ) {
return set( key.toString(), content );
Expand Down Expand Up @@ -531,6 +562,15 @@ public void delete( String name ) {
.setParameter("name", name)
.executeUpdate();
}

public void delete( String name, String lang ) {
actionLogSvc.log( new ActionLogRecord(ActionLogRecord.ActionType.Setting, "delete")
.setInfo(name));
em.createNamedQuery("Setting.deleteByNameAndLang")
.setParameter("name", name)
.setParameter("lang", lang)
.executeUpdate();
}

public Set<Setting> listAll() {
return new HashSet<>(em.createNamedQuery("Setting.findAll", Setting.class).getResultList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ public static String getStringFromDefaultPropertyFile(String key, String propert
return getStringFromBundleNoMissingCheck(key, null, bundle);
}

private static Locale getDefaultLocale() {
public static Locale getDefaultLocale() {
String localeEnvVar = System.getenv().get("LANG");
if (localeEnvVar != null) {
if (localeEnvVar.indexOf('.') > 0) {
Expand Down
13 changes: 11 additions & 2 deletions src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public class SystemConfig {
public static final String FQDN = "dataverse.fqdn";

/**
* A JVM option for specifying the "official" URL of the site.
* A JVM option for specifying the "official" URL of the site.
* Unlike the FQDN option above, this would be a complete URL,
* with the protocol, port number etc.
*/
Expand Down Expand Up @@ -489,8 +489,17 @@ public boolean isThumbnailGenerationDisabledForPDF() {
}

public String getApplicationTermsOfUse() {
String language = BundleUtil.getCurrentLocale().getLanguage();
String saneDefaultForAppTermsOfUse = BundleUtil.getStringFromBundle("system.app.terms");
String appTermsOfUse = settingsService.getValueForKey(SettingsServiceBean.Key.ApplicationTermsOfUse, saneDefaultForAppTermsOfUse);
String appTermsOfUse = "";
if(language.equalsIgnoreCase(BundleUtil.getDefaultLocale().getLanguage()) )
{
appTermsOfUse = settingsService.getValueForKey(SettingsServiceBean.Key.ApplicationTermsOfUse, saneDefaultForAppTermsOfUse);
}
else
{
appTermsOfUse = settingsService.getValueForKey(SettingsServiceBean.Key.ApplicationTermsOfUse, language, saneDefaultForAppTermsOfUse);
}
return appTermsOfUse;
}

Expand Down
1 change: 1 addition & 0 deletions src/main/java/propertyFiles/Bundle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2383,6 +2383,7 @@ staticSearchFields.dvObjectType=Type
staticSearchFields.fileTag=File Tag
staticSearchFields.fileAccess=Access
staticSearchFields.publicationStatus=Publication Status
staticSearchFields.subject_ss=Subject
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JayanthyChengan is this supposed to be part of this PR?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@scolapasta - Missing term related to facet Internationalization. hope it's okay to add with this PR.


#dataverse category - Facet Labels
Researcher=Researcher
Expand Down