/branches/v3/impl/conf/WEB-INF/web.xml |
---|
12,6 → 12,10 |
</listener> |
--> |
<filter> |
<filter-name>UrlDisplayFilter</filter-name> |
<filter-class>pt.estgp.estgweb.web.filters.UrlDisplayFilter</filter-class> |
</filter> |
<filter> |
<filter-name>CacheControlFilter</filter-name> |
<filter-class>pt.estgp.estgweb.web.filters.CacheControlFilter</filter-class> |
</filter> |
73,6 → 77,10 |
</filter> |
<filter-mapping> |
<filter-name>UrlDisplayFilter</filter-name> |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
<filter-mapping> |
<filter-name>CacheControlFilter</filter-name> |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
/branches/v3/impl/conf/app.properties |
---|
352,6 → 352,9 |
url.stat.ignore.extension.6=.tif |
url.stat.ignore.extension.7=.bmp |
url.stat.ignore.extension.8=.swf |
url.stat.ignore.extension.9=.otf |
url.stat.ignore.extension.10=.woff2 |
url.stat.ignore.extension.10=.ttf |
url.stat.ignore.prefix.1=/urlstat |
url.stat.ignore.prefix.2=/public/ |
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/HtmlStringUtils.java |
---|
New file |
0,0 → 1,217 |
package pt.estgp.estgweb.utils; |
import java.io.StringWriter; |
import java.util.HashMap; |
/** |
* Created by jorgemachado on 16/10/17. |
*/ |
public class HtmlStringUtils { |
public static final String unescapeHtml3(final String input) { |
StringWriter writer = null; |
int len = input.length(); |
int i = 1; |
int st = 0; |
while (true) { |
// look for '&' |
while (i < len && input.charAt(i-1) != '&') |
i++; |
if (i >= len) |
break; |
// found '&', look for ';' |
int j = i; |
while (j < len && j < i + MAX_ESCAPE + 1 && input.charAt(j) != ';') |
j++; |
if (j == len || j < i + MIN_ESCAPE || j == i + MAX_ESCAPE + 1) { |
i++; |
continue; |
} |
// found escape |
if (input.charAt(i) == '#') { |
// numeric escape |
int k = i + 1; |
int radix = 10; |
final char firstChar = input.charAt(k); |
if (firstChar == 'x' || firstChar == 'X') { |
k++; |
radix = 16; |
} |
try { |
int entityValue = Integer.parseInt(input.substring(k, j), radix); |
if (writer == null) |
writer = new StringWriter(input.length()); |
writer.append(input.substring(st, i - 1)); |
if (entityValue > 0xFFFF) { |
final char[] chrs = Character.toChars(entityValue); |
writer.write(chrs[0]); |
writer.write(chrs[1]); |
} else { |
writer.write(entityValue); |
} |
} catch (NumberFormatException ex) { |
i++; |
continue; |
} |
} |
else { |
// named escape |
CharSequence value = lookupMap.get(input.substring(i, j)); |
if (value == null) { |
i++; |
continue; |
} |
if (writer == null) |
writer = new StringWriter(input.length()); |
writer.append(input.substring(st, i - 1)); |
writer.append(value); |
} |
// skip escape |
st = j + 1; |
i = st; |
} |
if (writer != null) { |
writer.append(input.substring(st, len)); |
String inputStr = writer.toString(); |
String strippedText = inputStr.replaceAll("\\<\\/p\\>", "\n"); |
strippedText = strippedText.replaceAll("\\<.*?\\>", " "); |
return strippedText; |
} |
String strippedText = input.replaceAll("\\<\\/p\\>", "\n"); |
strippedText = strippedText.replaceAll("\\<.*?\\>", " "); |
return strippedText; |
} |
private static final String[][] ESCAPES = { |
{"\"", "quot"}, // " - double-quote |
{"&", "amp"}, // & - ampersand |
{"<", "lt"}, // < - less-than |
{">", "gt"}, // > - greater-than |
// Mapping to escape ISO-8859-1 characters to their named HTML 3.x equivalents. |
{"\u00A0", "nbsp"}, // non-breaking space |
{"\u00A1", "iexcl"}, // inverted exclamation mark |
{"\u00A2", "cent"}, // cent sign |
{"\u00A3", "pound"}, // pound sign |
{"\u00A4", "curren"}, // currency sign |
{"\u00A5", "yen"}, // yen sign = yuan sign |
{"\u00A6", "brvbar"}, // broken bar = broken vertical bar |
{"\u00A7", "sect"}, // section sign |
{"\u00A8", "uml"}, // diaeresis = spacing diaeresis |
{"\u00A9", "copy"}, // © - copyright sign |
{"\u00AA", "ordf"}, // feminine ordinal indicator |
{"\u00AB", "laquo"}, // left-pointing double angle quotation mark = left pointing guillemet |
{"\u00AC", "not"}, // not sign |
{"\u00AD", "shy"}, // soft hyphen = discretionary hyphen |
{"\u00AE", "reg"}, // ® - registered trademark sign |
{"\u00AF", "macr"}, // macron = spacing macron = overline = APL overbar |
{"\u00B0", "deg"}, // degree sign |
{"\u00B1", "plusmn"}, // plus-minus sign = plus-or-minus sign |
{"\u00B2", "sup2"}, // superscript two = superscript digit two = squared |
{"\u00B3", "sup3"}, // superscript three = superscript digit three = cubed |
{"\u00B4", "acute"}, // acute accent = spacing acute |
{"\u00B5", "micro"}, // micro sign |
{"\u00B6", "para"}, // pilcrow sign = paragraph sign |
{"\u00B7", "middot"}, // middle dot = Georgian comma = Greek middle dot |
{"\u00B8", "cedil"}, // cedilla = spacing cedilla |
{"\u00B9", "sup1"}, // superscript one = superscript digit one |
{"\u00BA", "ordm"}, // masculine ordinal indicator |
{"\u00BB", "raquo"}, // right-pointing double angle quotation mark = right pointing guillemet |
{"\u00BC", "frac14"}, // vulgar fraction one quarter = fraction one quarter |
{"\u00BD", "frac12"}, // vulgar fraction one half = fraction one half |
{"\u00BE", "frac34"}, // vulgar fraction three quarters = fraction three quarters |
{"\u00BF", "iquest"}, // inverted question mark = turned question mark |
{"\u00C0", "Agrave"}, // А - uppercase A, grave accent |
{"\u00C1", "Aacute"}, // Б - uppercase A, acute accent |
{"\u00C2", "Acirc"}, // В - uppercase A, circumflex accent |
{"\u00C3", "Atilde"}, // Г - uppercase A, tilde |
{"\u00C4", "Auml"}, // Д - uppercase A, umlaut |
{"\u00C5", "Aring"}, // Е - uppercase A, ring |
{"\u00C6", "AElig"}, // Ж - uppercase AE |
{"\u00C7", "Ccedil"}, // З - uppercase C, cedilla |
{"\u00C8", "Egrave"}, // И - uppercase E, grave accent |
{"\u00C9", "Eacute"}, // Й - uppercase E, acute accent |
{"\u00CA", "Ecirc"}, // К - uppercase E, circumflex accent |
{"\u00CB", "Euml"}, // Л - uppercase E, umlaut |
{"\u00CC", "Igrave"}, // М - uppercase I, grave accent |
{"\u00CD", "Iacute"}, // Н - uppercase I, acute accent |
{"\u00CE", "Icirc"}, // О - uppercase I, circumflex accent |
{"\u00CF", "Iuml"}, // П - uppercase I, umlaut |
{"\u00D0", "ETH"}, // Р - uppercase Eth, Icelandic |
{"\u00D1", "Ntilde"}, // С - uppercase N, tilde |
{"\u00D2", "Ograve"}, // Т - uppercase O, grave accent |
{"\u00D3", "Oacute"}, // У - uppercase O, acute accent |
{"\u00D4", "Ocirc"}, // Ф - uppercase O, circumflex accent |
{"\u00D5", "Otilde"}, // Х - uppercase O, tilde |
{"\u00D6", "Ouml"}, // Ц - uppercase O, umlaut |
{"\u00D7", "times"}, // multiplication sign |
{"\u00D8", "Oslash"}, // Ш - uppercase O, slash |
{"\u00D9", "Ugrave"}, // Щ - uppercase U, grave accent |
{"\u00DA", "Uacute"}, // Ъ - uppercase U, acute accent |
{"\u00DB", "Ucirc"}, // Ы - uppercase U, circumflex accent |
{"\u00DC", "Uuml"}, // Ь - uppercase U, umlaut |
{"\u00DD", "Yacute"}, // Э - uppercase Y, acute accent |
{"\u00DE", "THORN"}, // Ю - uppercase THORN, Icelandic |
{"\u00DF", "szlig"}, // Я - lowercase sharps, German |
{"\u00E0", "agrave"}, // а - lowercase a, grave accent |
{"\u00E1", "aacute"}, // б - lowercase a, acute accent |
{"\u00E2", "acirc"}, // в - lowercase a, circumflex accent |
{"\u00E3", "atilde"}, // г - lowercase a, tilde |
{"\u00E4", "auml"}, // д - lowercase a, umlaut |
{"\u00E5", "aring"}, // е - lowercase a, ring |
{"\u00E6", "aelig"}, // ж - lowercase ae |
{"\u00E7", "ccedil"}, // з - lowercase c, cedilla |
{"\u00E8", "egrave"}, // и - lowercase e, grave accent |
{"\u00E9", "eacute"}, // й - lowercase e, acute accent |
{"\u00EA", "ecirc"}, // к - lowercase e, circumflex accent |
{"\u00EB", "euml"}, // л - lowercase e, umlaut |
{"\u00EC", "igrave"}, // м - lowercase i, grave accent |
{"\u00ED", "iacute"}, // н - lowercase i, acute accent |
{"\u00EE", "icirc"}, // о - lowercase i, circumflex accent |
{"\u00EF", "iuml"}, // п - lowercase i, umlaut |
{"\u00F0", "eth"}, // р - lowercase eth, Icelandic |
{"\u00F1", "ntilde"}, // с - lowercase n, tilde |
{"\u00F2", "ograve"}, // т - lowercase o, grave accent |
{"\u00F3", "oacute"}, // у - lowercase o, acute accent |
{"\u00F4", "ocirc"}, // ф - lowercase o, circumflex accent |
{"\u00F5", "otilde"}, // х - lowercase o, tilde |
{"\u00F6", "ouml"}, // ц - lowercase o, umlaut |
{"\u00F7", "divide"}, // division sign |
{"\u00F8", "oslash"}, // ш - lowercase o, slash |
{"\u00F9", "ugrave"}, // щ - lowercase u, grave accent |
{"\u00FA", "uacute"}, // ъ - lowercase u, acute accent |
{"\u00FB", "ucirc"}, // ы - lowercase u, circumflex accent |
{"\u00FC", "uuml"}, // ь - lowercase u, umlaut |
{"\u00FD", "yacute"}, // э - lowercase y, acute accent |
{"\u00FE", "thorn"}, // ю - lowercase thorn, Icelandic |
{"\u00FF", "yuml"}, // я - lowercase y, umlaut |
}; |
private static final int MIN_ESCAPE = 2; |
private static final int MAX_ESCAPE = 6; |
private static final HashMap<String, CharSequence> lookupMap; |
static { |
lookupMap = new HashMap<String, CharSequence>(); |
for (final CharSequence[] seq : ESCAPES) |
lookupMap.put(seq[1].toString(), seq[0]); |
} |
public static void main(String[] args) |
{ |
System.out.println(unescapeHtml3("<p>Motivação para a unidade curricular</p>")); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/ReflectionHelper.java |
---|
New file |
0,0 → 1,124 |
package pt.estgp.estgweb.utils; |
import org.reflections.Reflections; |
import pt.estgp.estgweb.domain.dao.RoleContainer; |
import java.io.File; |
import java.io.IOException; |
import java.net.URL; |
import java.util.ArrayList; |
import java.util.Enumeration; |
import java.util.List; |
import java.util.Set; |
/** |
* Created by jorgemachado on 16/10/17. |
*/ |
public class ReflectionHelper { |
public static List<Class<?>> findClassesImpmenenting(final Class<?> interfaceClass, final Package fromPackage) { |
if (interfaceClass == null) { |
System.out.println("Unknown subclass."); |
return null; |
} |
if (fromPackage == null) { |
System.out.println("Unknown package."); |
return null; |
} |
final List<Class<?>> rVal = new ArrayList<Class<?>>(); |
try { |
final Class<?>[] targets = getAllClassesFromPackage(fromPackage.getName()); |
if (targets != null) { |
for (Class<?> aTarget : targets) { |
if (aTarget == null) { |
continue; |
} |
else if (aTarget.equals(interfaceClass)) { |
System.out.println("Found the interface definition."); |
continue; |
} |
else if (!interfaceClass.isAssignableFrom(aTarget)) { |
System.out.println("Class '" + aTarget.getName() + "' is not a " + interfaceClass.getName()); |
continue; |
} |
else { |
rVal.add(aTarget); |
} |
} |
} |
} |
catch (ClassNotFoundException e) { |
System.out.println("Error reading package name."); |
e.printStackTrace(); |
} |
catch (IOException e) { |
System.out.println("Error reading classes in package."); |
e.printStackTrace(); |
} |
return rVal; |
} |
/** |
* Load all classes from a package. |
* |
* @param packageName |
* @return |
* @throws ClassNotFoundException |
* @throws IOException |
*/ |
public static Class[] getAllClassesFromPackage(final String packageName) throws ClassNotFoundException, IOException { |
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); |
assert classLoader != null; |
String path = packageName.replace('.', '/'); |
Enumeration<URL> resources = classLoader.getResources(path); |
List<File> dirs = new ArrayList<File>(); |
while (resources.hasMoreElements()) { |
URL resource = resources.nextElement(); |
dirs.add(new File(resource.getFile())); |
} |
ArrayList<Class> classes = new ArrayList<Class>(); |
for (File directory : dirs) { |
classes.addAll(findClasses(directory, packageName)); |
} |
return classes.toArray(new Class[classes.size()]); |
} |
/** |
* Find file in package. |
* |
* @param directory |
* @param packageName |
* @return |
* @throws ClassNotFoundException |
*/ |
public static List<Class<?>> findClasses(File directory, String packageName) throws ClassNotFoundException { |
List<Class<?>> classes = new ArrayList<Class<?>>(); |
if (!directory.exists()) { |
return classes; |
} |
File[] files = directory.listFiles(); |
for (File file : files) { |
if (file.isDirectory()) { |
assert !file.getName().contains("."); |
classes.addAll(findClasses(file, packageName + "." + file.getName())); |
} |
else if (file.getName().endsWith(".class")) { |
classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6))); |
} |
} |
return classes; |
} |
public static void main(String[] args) |
{ |
Reflections reflections = new Reflections("pt.estgp.estgweb"); |
Set<Class<? extends RoleContainer>> subTypes = reflections.getSubTypesOf(RoleContainer.class); |
System.out.println("aqui"); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java |
---|
1193,12 → 1193,12 |
ReplaceRoleResult result; |
if(c.getValidationRole() == null || c.getValidationRole().trim().length() == 0) |
{ |
result = new UserRoleConfigService().addUpdateRole(newUserRoleConfig,userSession); |
result = new UserRoleConfigService().addUpdateRole(newUserRoleConfig,userSession,false); |
} |
else |
{ |
String oldValidationRole = c.getValidationRole(); |
result = new UserRoleConfigService().updateOldRoleWithView(oldValidationRole, newUserRoleConfig, userSession); |
result = new UserRoleConfigService().updateOldRoleWithView(oldValidationRole, newUserRoleConfig, userSession,false); |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumariesJson.java |
---|
11,6 → 11,7 |
import org.json.JSONArray; |
import org.json.JSONException; |
import org.json.JSONObject; |
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Aula; |
import pt.estgp.estgweb.utils.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
31,6 → 32,7 |
import pt.estgp.estgweb.services.sigesimports.oracle.dao.connection.ConnectionManager; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import pt.estgp.estgweb.utils.HtmlStringUtils; |
import pt.estgp.estgweb.web.FtpServer; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
143,7 → 145,7 |
int tries = 3; |
//ArrayOfAula arrayOfAulas = null; |
ArrayList<pt.estgp.estgweb.services.sigesimports.oracle.domain.Aula> arrayOfAulas = null; |
ArrayList<pt.estgp.estgweb.services.sigesimports.oracle.domain.Aula> arrayOfAulas = new ArrayList<Aula>(); |
while(tries > 0) |
{ |
//comentario de teste |
159,8 → 161,16 |
String msg = "courseUnit:" + cId + " ( " + c.getName() + " ) com sumarios num semestre diferente, atribuido pela administracao do baco: " + semestreEmQueForamCriadosOsSumarios; |
logger.info(msg); |
serviceLogInfo(msg); |
arrayOfAulas = AulaDao.getInstance().loadAulas(institutionCode,year,c.getCode(),semestreEmQueForamCriadosOsSumarios,c.getCourse().getCode(),conn); |
} |
arrayOfAulas = AulaDao.getInstance().loadAulas(institutionCode,year,c.getCode(),semestreEmQueForamCriadosOsSumarios,c.getCourse().getCode(),conn); |
ArrayList<pt.estgp.estgweb.services.sigesimports.oracle.domain.Aula> aulasSemestreUnidade = AulaDao.getInstance().loadAulas(institutionCode,year,c.getCode(),semestre,c.getCourse().getCode(),conn); |
if(aulasSemestreUnidade!=null && aulasSemestreUnidade.size() > 0) |
{ |
String msg = "courseUnit:" + cId + " ( " + c.getName() + " ) tem sumarios no semestre da unidade " + semestre; |
logger.info(msg); |
serviceLogInfo(msg); |
arrayOfAulas.addAll(aulasSemestreUnidade); |
} |
break; |
} |
251,7 → 261,8 |
s.setTitulo(aula.getSum_titulo()); |
s.setCodigoDocente(aula.getAula_codigoDocente()+ ""); |
s.setCdResponsavel(aula.getCodigoResponsavel()+ ""); |
s.setDescricao(aula.getSum_descricao()); |
if(aula.getSum_descricao()!= null) |
s.setDescricao(HtmlStringUtils.unescapeHtml3(aula.getSum_descricao())); |
s.setcEstado(""+aula.getSum_cdEstado().intValue()); |
s.setNumeroHoras("" + aula.getNumeroCelulas().intValue()); |
s.setCdTurma(aula.getAula_codigoTurma()); |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/users/UserRoleConfigService.java |
---|
1,8 → 1,10 |
package pt.estgp.estgweb.services.users; |
import org.apache.log4j.Logger; |
import org.reflections.Reflections; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.dao.RoleContainer; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedException; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
11,6 → 13,7 |
import java.io.StringReader; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.Set; |
/** |
* Created by jorgemachado on 29/01/16. |
55,12 → 58,28 |
public ReplaceRoleResult updateOldRoleWithView(String oldRole,UserRoleConfigImpl newViewRoleConfig, UserSession sess) |
throws AccessDeniedException |
{ |
return updateOldRoleWithView(oldRole, newViewRoleConfig, sess,true); |
} |
public ReplaceRoleResult updateOldRoleWithView(String oldRole,UserRoleConfigImpl newViewRoleConfig, UserSession sess,boolean updateCourses) |
throws AccessDeniedException |
{ |
UserRoleConfig oldUserRoleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(oldRole); |
newViewRoleConfig.setId(oldUserRoleConfig.getId()); |
return addUpdateRole(newViewRoleConfig,sess); |
if(oldUserRoleConfig == null) |
{ |
return addUpdateRole(newViewRoleConfig,sess,updateCourses); |
} |
else |
{ |
newViewRoleConfig.setId(oldUserRoleConfig.getId()); |
return addUpdateRole(newViewRoleConfig,sess,updateCourses); |
} |
} |
public ReplaceRoleResult addUpdateRole(UserRoleConfigImpl viewRoleConfig, UserSession sess) |
public ReplaceRoleResult addUpdateRole(UserRoleConfigImpl viewRoleConfig, UserSession sess) throws AccessDeniedException { |
return addUpdateRole(viewRoleConfig, sess,true); |
} |
public ReplaceRoleResult addUpdateRole(UserRoleConfigImpl viewRoleConfig, UserSession sess, boolean updateCourseRoles) |
throws AccessDeniedException |
{ |
70,7 → 89,7 |
String newRoleStr = viewRoleConfig.getRole().trim(); |
if(viewRoleConfig.getId() <= 0) |
{ |
replaceRoleResult = replaceOrCreateRoleKey(null, newRoleStr, sess); |
replaceRoleResult = replaceOrCreateRoleKey(null, newRoleStr, sess,updateCourseRoles); |
if(replaceRoleResult.roleKeyAlreadyExist) |
return replaceRoleResult; |
persistent = replaceRoleResult.updatedUserRoleConfig; |
84,7 → 103,7 |
{ |
if(sess.getUser().isSuperuserOrAdmin()) |
{ |
replaceRoleResult = replaceOrCreateRoleKey(persistent.getRole(), newRoleStr, sess); |
replaceRoleResult = replaceOrCreateRoleKey(persistent.getRole(), newRoleStr, sess,updateCourseRoles); |
if(replaceRoleResult.roleKeyAlreadyExist) |
return replaceRoleResult; |
115,6 → 134,18 |
} |
public static Set<Class<? extends RoleContainer>> roleContainerClasses = null; |
private synchronized void init() |
{ |
if(roleContainerClasses == null) |
{ |
Reflections reflections = new Reflections("pt.estgp.estgweb"); |
roleContainerClasses = reflections.getSubTypesOf(RoleContainer.class); |
} |
} |
/** |
* Serviço de nível SUPORTE |
* Usado pelo update de Roles e Pela normalização de Roles de Comissões de Curso |
127,7 → 158,7 |
* @return ReplaceRoleResult if roleKeyAlreadyExist = true - nothing was done need to be a none existing new role key |
* ReplaceRoleResult.updatedUserRoleConfig tem o role antigo atualizado ou o novo criado com o newRole |
*/ |
public ReplaceRoleResult replaceOrCreateRoleKey(String oldRole, String newRole, UserSession sess) |
public ReplaceRoleResult replaceOrCreateRoleKey(String oldRole, String newRole, UserSession sess,boolean updateCourses) |
{ |
ReplaceRoleResult result = new ReplaceRoleResult(newRole); |
152,39 → 183,33 |
replaceUserRoles(oldRole, newRole, result); |
replaceCourseRoles(oldRole, newRole, result); |
if(updateCourses) |
replaceCourseRoles(oldRole, newRole, result); |
replaceSchoolAndDepartmentRoles(oldRole, newRole, result); |
replaceEventClasseManagerRoles(oldRole, newRole, result); |
init(); |
for (Class serviceClass : roleContainerClasses) { |
System.out.println("Replacing Roles Notification Found: " + serviceClass.getName()); |
try { |
((RoleContainer)serviceClass.newInstance()).replaceRoleNotification(oldRole,newRole,result); |
} catch (InstantiationException e) { |
logger.error(e,e); |
} catch (IllegalAccessException e) { |
logger.error(e, e); |
} |
} |
//DaoFactory.getBpmnRoleSelectorDaoImpl().replaceRoleNotification(oldRole, newRole, result); |
replaceBpmnActorPoolInstancesRoles(oldRole, newRole, result); |
//replaceBpmnActorPoolRoles(oldRole, newRole, result); |
replaceBpmnActorPoolRoles(oldRole, newRole, result); |
} |
return result; |
} |
private void replaceBpmnActorPoolInstancesRoles(String oldRole, String newRole, ReplaceRoleResult result) { |
List<BpmnActorPoolInstanceImpl> actorPoolInstances = DaoFactory.getBpmnActorPoolInstanceDaoImpl().findByRole(oldRole); |
result.afectedActorPoolRolesInstances = actorPoolInstances.size(); |
for(BpmnActorPoolInstanceImpl actorPoolInstance: actorPoolInstances) |
{ |
actorPoolInstance.replaceRole(oldRole,newRole); |
} |
} |
private void replaceBpmnActorPoolRoles(String oldRole, String newRole, ReplaceRoleResult result) { |
List<BpmnActorPoolImpl> actorPools = DaoFactory.getBpmnActorPoolDaoImpl().findByRole(oldRole); |
result.afectedActorPoolRoles = actorPools.size(); |
for(BpmnActorPoolImpl actorPool: actorPools) |
{ |
actorPool.replaceRole(oldRole,newRole); |
} |
} |
private void replaceEventClasseManagerRoles(String oldRole, String newRole, ReplaceRoleResult result) { |
List<EventClass> eventClasses = DaoFactory.getEventClassDaoImpl().findByManagerRole(oldRole); |
result.afectedEventClassManagers = eventClasses.size(); |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/BpmnActorPoolInstanceDaoImpl.java |
---|
1,14 → 1,5 |
package pt.estgp.estgweb.domain.dao.impl; |
import pt.estgp.estgweb.domain.BpmnActorPoolInstanceImpl; |
import pt.estgp.estgweb.utils.RoleManager; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.like; |
/** |
* Created by jorgemachado on 23/02/17. |
*/ |
21,19 → 12,4 |
} |
public List<BpmnActorPoolInstanceImpl> findByRole(String role) |
{ |
if(role == null || role.trim().length() == 0) |
return new ArrayList<BpmnActorPoolInstanceImpl>(); |
List<BpmnActorPoolInstanceImpl> pools = createCriteria().add(like("domainRolesTxt", "%" + role + RoleManager.ROLE_SEPARATOR + "%")).list(); |
Iterator<BpmnActorPoolInstanceImpl> iter = pools.iterator(); |
while(iter.hasNext()) |
{ |
BpmnActorPoolInstanceImpl p = iter.next(); |
if(!p.hasRole(role)) |
iter.remove(); |
} |
return pools; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
212,7 → 212,7 |
public List<Course> findAllShowStudiesPlanCoursesOrderByNameEvenWithoutCourseUnit(String institutionalCode, String degree) |
{ |
return findAllCoursesOrderByNameEvenWithoutCourseUnit(institutionalCode,degree,true); |
return findAllCoursesOrderByNameEvenWithoutCourseUnit(institutionalCode,degree,true,false); |
} |
public List<String> findDegrees(String institutionalCode,boolean showWithStudiesPlanActive) |
226,15 → 226,18 |
return q.list(); |
} |
public List<Course> findAllCoursesOrderByNameEvenWithoutCourseUnit(String institutionalCode, String degree,boolean showWithStudiesPlanActive) |
public List<Course> findAllCoursesOrderByNameEvenWithoutCourseUnit(String institutionalCode, String degree,boolean showOnlyWithStudiesPlanActive,boolean showOnlyStatusActive) |
{ |
Criteria c = createCriteria(); |
c.createAlias("department", "d"); |
c.createAlias("d.courseSchool","sc"); |
if(showWithStudiesPlanActive) |
if(showOnlyWithStudiesPlanActive) |
c.add(eq("showStudiesPlan", true)); |
if(showOnlyStatusActive) |
c.add(eq("status", true)); |
if (degree != null && degree.length() > 0) |
c.add(eq("degree", degree)); |
414,7 → 417,6 |
/** |
* Return only courses if user is from CourseCommission or Coordinator or have role Globals.SERVICES_PROGRAMS_ROLE |
* otherwise return null; |
* @param importYear |
* @param u |
* @return |
*/ |
507,7 → 509,7 |
public static void main(String[] args) throws SQLException { |
AbstractDao.getCurrentSession().beginTransaction(); |
List t2 = new CourseDaoImpl().findDegrees("1",true); |
List t = new CourseDaoImpl().findAllCoursesOrderByNameEvenWithoutCourseUnit("1", "L", true); |
List t = new CourseDaoImpl().findAllCoursesOrderByNameEvenWithoutCourseUnit("1", "L", true,true); |
t2 = new CourseDaoImpl().findAllOrderByName("201516","td","L","1"); |
System.out.println(t.size()); |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/BpmnRoleSelectorDaoImpl.java |
---|
New file |
0,0 → 1,53 |
package pt.estgp.estgweb.domain.dao.impl; |
import pt.estgp.estgweb.domain.BpmnRoleSelectorImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.dao.RoleContainer; |
import pt.estgp.estgweb.services.users.ReplaceRoleResult; |
import pt.estgp.estgweb.utils.RoleManager; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.like; |
/** |
* Created by jorgemachado on 23/02/17. |
*/ |
public class BpmnRoleSelectorDaoImpl extends BpmnRoleSelectorDao implements RoleContainer |
{ |
public static BpmnRoleSelectorDaoImpl getInstance() { |
if (myInstance == null) |
myInstance = new BpmnRoleSelectorDaoImpl(); |
return (BpmnRoleSelectorDaoImpl) myInstance; |
} |
public List<BpmnRoleSelectorImpl> findByRole(String role) |
{ |
if(role == null || role.trim().length() == 0) |
return new ArrayList<BpmnRoleSelectorImpl>(); |
List<BpmnRoleSelectorImpl> roleSelectors = createCriteria().add(like("role", "%" + role + RoleManager.ROLE_SEPARATOR + "%")).list(); |
Iterator<BpmnRoleSelectorImpl> iter = roleSelectors.iterator(); |
while(iter.hasNext()) |
{ |
BpmnRoleSelectorImpl p = iter.next(); |
if(!p.hasRole(role)) |
iter.remove(); |
} |
return roleSelectors; |
} |
public void replaceRoleNotification(String oldRole, String newRole, ReplaceRoleResult result) { |
List<BpmnRoleSelectorImpl> bpmnRoleSelectors = DaoFactory.getBpmnRoleSelectorDaoImpl().findByRole(oldRole); |
result.afectedActorPoolRolesInstances = bpmnRoleSelectors.size(); |
for(BpmnRoleSelectorImpl bpmnRoleSelector: bpmnRoleSelectors) |
{ |
bpmnRoleSelector.replaceRole(oldRole,newRole); |
} |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/RoleContainer.java |
---|
New file |
0,0 → 1,11 |
package pt.estgp.estgweb.domain.dao; |
import pt.estgp.estgweb.services.users.ReplaceRoleResult; |
/** |
* Created by jorgemachado on 16/10/17. |
*/ |
public interface RoleContainer |
{ |
public void replaceRoleNotification(String oldRole, String newRole, ReplaceRoleResult result); |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java |
---|
615,4 → 615,8 |
public static BpmnFlowComponentDao getBpmnFlowComponentDaoImpl() { |
return BpmnFlowComponentDao.getInstance(); |
} |
public static BpmnRoleSelectorDaoImpl getBpmnRoleSelectorDaoImpl() { |
return BpmnRoleSelectorDaoImpl.getInstance(); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/TeacherImpl.java |
---|
314,6 → 314,7 |
* |
* @return all roles type course comission from user roles and validationRoles from coordinated courses |
* where user is main coordinator |
* APENAS CURSOS ATIVOS STATUS = TRUE |
*/ |
public List<String> obtainCourseComissionsAndCoordinationsRoles() |
{ |
325,12 → 326,17 |
} |
for(Course coordinated : getCoordinatorCourses()) |
{ |
if(coordinated.getValidationRole() != null && coordinated.getValidationRole().trim().length() > 0) |
if(coordinated.isStatus() && coordinated.getValidationRole() != null && coordinated.getValidationRole().trim().length() > 0) |
{ |
if(!comissionsRoles.contains(coordinated.getValidationRole())) |
comissionsRoles.add(coordinated.getValidationRole()); |
} |
} |
//System.out.println("Roles for: " + getName()); |
/*for(String role: comissionsRoles) |
{ |
System.out.println(role); |
}*/ |
return comissionsRoles; |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/BpmnRoleSelectorImpl.java |
---|
1,7 → 1,38 |
package pt.estgp.estgweb.domain; |
import pt.estgp.estgweb.utils.RoleManager; |
/** |
* Created by jorgemachado on 13/06/17. |
*/ |
public class BpmnRoleSelectorImpl extends BpmnRoleSelector { |
public class BpmnRoleSelectorImpl extends BpmnRoleSelector |
{ |
public boolean hasRole(String r) |
{ |
if(getRole()!=null) |
return RoleManager.hasRole(RoleManager.getRolesFromSerial(getRole()), r); |
return false; |
/* |
if (r == null || getSelectorRole() == null || getSelectorRole().getRoles() == null || getSelectorRole().getRoles().size() == 0) |
return false; |
for (DomainRoleProxy role : getSelectorRole().getRoles()) |
{ |
if (role.getRole().equals(r)) |
return true; |
} |
return false; |
*/ |
} |
public void replaceRole(String oldRole,String newRole) |
{ |
if (oldRole == null || newRole == null) |
return; |
String role = RoleManager.removeRole(getRole(),oldRole); |
setRole(RoleManager.addRole(role,newRole)); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/filters/filters/AccessLogger.java |
---|
1,12 → 1,13 |
package pt.estgp.estgweb.filters.filters; |
import java.util.Date; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.filters.chains.LoggingFilter; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.estgp.estgweb.filters.chains.LoggingFilter; |
import org.apache.log4j.Logger; |
import java.util.Date; |
public class AccessLogger extends LoggingFilter |
{ |
private static final Logger logger = Logger.getLogger(AccessLogger.class); |
15,6 → 16,6 |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
logger.info("Mr." + request.getRequester() + " accessed "+ request.getService()+ " at " + new Date(System.currentTimeMillis())); |
logger.info("Mr." + request.getRequester() + " accessed "+ request.getService()+ " at " + new Date(System.currentTimeMillis()) + " - " + request.getMethodName()); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java |
---|
102,7 → 102,7 |
if(userSession == null) |
{ |
dummy = true; |
System.out.println("Creating dummy UserSession"); |
logger.warn("Creating dummy UserSession: " + request.getRemoteAddr() + " : " + request.getRemoteHost() + " : " + request.getRemotePort()); |
userSession = new UserSessionImpl();//creating a dummy there is no cookie |
request.setAttribute(Globals.USER_SESSION_KEY,userSession); |
userSession.setIpAddress(request.getRemoteAddr() + " : " + request.getRemoteHost() + " : " + request.getRemotePort()); |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/filters/UrlDisplayFilter.java |
---|
New file |
0,0 → 1,58 |
package pt.estgp.estgweb.web.filters; |
/** |
* Created by jorgemachado on 24/05/16. |
*/ |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.utils.Globals; |
import javax.servlet.*; |
import javax.servlet.http.HttpServletRequest; |
import java.io.IOException; |
import java.util.List; |
public class UrlDisplayFilter implements Filter { |
private static Logger logger = Logger.getLogger(UrlDisplayFilter.class); |
public static final List<String> URL_STAT_IGNORE_EXTENSIONS = Globals.URL_STAT_IGNORE_EXTENSIONS; |
@Override |
public void init(FilterConfig filterConfig) throws ServletException { |
} |
public void doFilter(ServletRequest request, ServletResponse response, |
FilterChain chain) throws IOException, ServletException { |
HttpServletRequest req = (HttpServletRequest) request; |
String relativePath = req.getServletPath(); |
if (relativePath == null) |
relativePath = ""; |
if (req.getPathInfo() != null && req.getPathInfo().length() > 0) |
{ |
relativePath += req.getPathInfo(); |
} |
for (String ignore : URL_STAT_IGNORE_EXTENSIONS) |
{ |
if (relativePath.endsWith(ignore)) |
{ |
chain.doFilter(request, response); |
return; |
} |
} |
//String sessId = req.getSession() != null ? req.getSession().getId() : " no session "; |
logger.info("url[" + req.getRequestURL().toString() + "] reqSessionId[" + req.getRequestedSessionId() + "] servletPath[" + req.getServletPath() + "] ip[" + req.getRemoteAddr() + "]"); |
chain.doFilter(request, response); |
} |
@Override |
public void destroy() { |
} |
} |
/branches/v3/impl/src/java/pt/utl/ist/berserk/logic/serviceManager/TransactionalServiceInvoker.java |
---|
83,6 → 83,14 |
{ |
System.out.println("THREAD:" + Thread.currentThread().getId() + "AVISO : ESTA A CHAMAR UM SERVICO TRANSACIONAL DENTRO DE UMA TRANSACAO, VAMOS MANTER A MESMA TRASACAO"); |
System.out.println(">>>>>>TRANSACTION WARNING BUT NO PROBLEM: AVISO: Já existia uma transação activa e foi iniciada outra neste momento sem fechar a anterior "); |
System.out.println("Servico chamado: " + service.getClass().getName()); |
System.out.println("Metodo chamado: " + methodName); |
System.out.println("Requester: " + requester); |
System.out.println("Arguments: " + arguments); |
System.out.println("ArgNames: " + names); |
for (StackTraceElement ste : Thread.currentThread().getStackTrace()) { |
System.out.println("\t" + ste); |
} |
/branches/v3/impl/src/web/layout/headerTools.jsp |
---|
5,7 → 5,7 |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib prefix="baco" uri="http://www.estgp.pt/baco/" %> |
<%@ taglib prefix="baco" uri="/WEB-INF/tlds/baco.tld" %> |
<%--Esta declaracao tem de estar antes das proximas que sao dependentes desta--%> |
<script> |
var GLOBAL_BacoAngularAppDependencies = []; |
/branches/v3/impl/src/web/user/courses/courseReportTools.jsp |
---|
30,6 → 30,8 |
request.setAttribute("importYear",importYear); |
for(Course course: courses) |
{ |
if(course.isStatus()) |
{ |
request.setAttribute("course",course); |
%> |
<div class="col-md-6"> |
37,7 → 39,9 |
<span class="glyphicon glyphicon-wrench"></span> ${course.code} - <bean:message key="course.${course.degree}"/> - ${course.name} |
</html:link> |
</div> |
<% |
} |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
/branches/v3/impl/src/web/user/courseunits/courseCourseunitsStatistics.jsp |
---|
23,9 → 23,10 |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/> |
<% |
AbstractDao.getCurrentSession().beginTransaction(); |
String all = request.getParameter("all"); |
String importYear = request.getParameter("importYear"); |
AbstractDao.getCurrentSession().beginTransaction(); |
//AbstractDao.getCurrentSession().beginTransaction(); |
if(importYear == null) |
importYear = UserSession.getNowConfiguration().getInterfaceImportYear(); |
42,9 → 43,9 |
if(UserSession.getUser().isSuperuserOrAdmin() || UserSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE) || UserSession.getUser().hasRole("services")) |
{ |
allCourses = true; |
AbstractDao.getCurrentSession().beginTransaction(); |
Criteria c = AbstractDao.getCurrentSession().createCriteria(CourseUnit.class) |
.setProjection(Projections.projectionList().add(Projections.groupProperty("c.validationRole")) |
.add(Projections.property("c.id")).add(Projections.property("c.name")).add(Projections.property("c.code"))) |
52,7 → 53,7 |
//.add(eq("importYear", importYear)) |
; |
List<Object[]> validationRoles = c.list(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
comissionsRoles = new ArrayList<String>(); |
%> |
92,9 → 93,9 |
%> |
</div> |
<% |
} |
else |
{ |
} |
else |
{ |
User persistentUser = DaoFactory.getUserDaoImpl().narrow(DaoFactory.getUserDaoImpl().get(UserSession.getUser().getId())); |
comissionsRoles = new ArrayList<String>(); |
147,8 → 148,8 |
<% |
try |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
if(all == null) |
{ |
%> |
225,6 → 226,7 |
.add(Projections.property("c.name")) |
.add(Projections.property("c.code"))) |
.createAlias("course", "c") |
.add(eq("c.status", true)) |
.add(eq("importYear", importYear)) |
.add(eq("c.validationRole", roleCourse)); |
List<Object[]> coursesForRole = c.list(); |
339,6 → 341,7 |
<td><button class="btn btn-default" data-href="<%=request.getContextPath()%>/user/courseunits/statsAjax.jsp?courseUnitId=${cu.id}" data-title="Estatisticas da Unidade ${cu.name} (${cu.code})" data-toggle="modal" data-target="#modalAjaxRequest"><span class="glyphicon glyphicon-zoom-in"/></button> </td> |
</tr> |
<% |
AbstractDao.getCurrentSession().evict(cu); |
} |
if(all == null) |
369,7 → 372,7 |
</table> |
<% |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
catch(Exception e) |
{ |
/branches/v3/impl/src/web/user/profile/rolesCoordenacoes.jsp |
---|
13,6 → 13,7 |
<% |
boolean showAllCourses = request.getParameter("showAllCourses") != null ? Boolean.parseBoolean(request.getParameter("showAllCourses")) : false; |
boolean showWithStudiesPlanActive = ! showAllCourses; |
boolean showStatusActive = !showAllCourses; |
List<String> institutionCodes = ConfigProperties.getListValues("institution.code.prefix.inverse."); |
%> |
<script> |
53,7 → 54,7 |
} |
</script> |
<p>Nesta listagem apenas são mostrados os Cursos publicos no Site do IPP, se o curso que procura não está listado clique aqui para ver todos <a class="btn btn-default" href="<%=request.getContextPath()%>/user/showRoleUsers.do?showAllCourses=true#comissoes">Mostrar Todos</a></p> |
<p>Nesta listagem apenas são mostrados os Cursos ativos no PAE, se o curso que procura não está listado clique aqui para ver todos <a class="btn btn-default" href="<%=request.getContextPath()%>/user/showRoleUsers.do?showAllCourses=true#comissoes">Mostrar Todos</a></p> |
<!--TBS DE INSTITUICAO--> |
106,7 → 107,7 |
<div class="degree" id="degree<%=degree%>" style="display: none"> |
<% |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllCoursesOrderByNameEvenWithoutCourseUnit(instCode,degree,showWithStudiesPlanActive); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllCoursesOrderByNameEvenWithoutCourseUnit( instCode,degree,false,showStatusActive); |
for(Course course: courses) |
{ |
request.setAttribute("course",course); |
182,6 → 183,9 |
<div class="web-messages"> </div> |
</div> |
</div> |
<div> |
<p>Activo: ${course.status} / Visivel no Site IPP: ${course.showStudiesPlan}</p> |
</div> |
<div class="col-md-6"> |
<baco:hasRole role="admin,all,servicesRolesManagement,servicesCoursesManagement,services"> |
<bacoTags:searchUserTab callbackFunction="mudarCoordenador${course.id}" title="Procurar novo coordenador" useModals="true"/> |
/branches/v3/impl/src/web/user/repositoryDocuments/adminImportTools.jsp |
---|
9,7 → 9,7 |
<%@ taglib prefix="logic" uri="/WEB-INF/tlds/struts-logic.tld" %> |
<%@ taglib prefix="html" uri="/WEB-INF/tlds/struts-html.tld" %> |
<%@ taglib prefix="bean" uri="/WEB-INF/tlds/struts-bean.tld" %> |
<%@ taglib prefix="baco" uri="http://www.estgp.pt/baco/" %> |
<%@ taglib prefix="baco" uri="/WEB-INF/tlds/baco.tld" %> |
<baco:hasNotRole role="admin,all"> |
<div class="web-messages"> |
<div class="alert alert-warning">Esta funcionalidade só pode ser utilizada por admnistradores</div> |
/branches/v3/impl/src/web/user/repositoryDocuments/showInterface.jsp |
---|
22,7 → 22,7 |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib tagdir="/WEB-INF/tags" prefix="bacoTags" %> |
<%@ taglib prefix="baco" uri="http://www.estgp.pt/baco/" %> |
<%@ taglib prefix="baco" uri="/WEB-INF/tlds/baco.tld" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<% |
String slugOrId = (String) request.getAttribute("slug"); |
/branches/v3/impl/src/web/user/contacts/listCourseComissionStudents.jsp |
---|
65,7 → 65,7 |
.add(Projections.property("course.code"))) |
.createAlias("subscribedUnits", "su") |
.createAlias("su.course", "course") |
.add(eq("su.importYear", "201516")) |
.add(eq("su.importYear", UserSession.getNowConfiguration().getInterfaceImportYear())) |
.add(eq("course.validationRole", roleCourse)) |
; |
c.addOrder(Order.asc("name")); |
/branches/v3/impl/libs.xml |
---|
120,6 → 120,10 |
<include name="**/*.jar"/> |
</fileset> |
<fileset dir="${common.lib.dir}/reflections"> |
<include name="**/*.jar"/> |
</fileset> |
</path> |
<path id="pathToAntLibs"> |
/branches/v3/impl/build.xml |
---|
311,6 → 311,11 |
<include name="**/*.jar"/> |
</fileset> |
<fileset dir="${common.lib.dir}/reflections"> |
<include name="**/*.jar"/> |
</fileset> |
</copy> |
<copy file="${dist.dir}/estgweb.jar" todir="${build.dir.war}/WEB-INF/lib"/> |
<copy todir="${build.dir.war}/WEB-INF" overwrite="true"> |
/branches/v3/impl/etc/jvmconfig/JVM_MANAGE.txt |
---|
New file |
0,0 → 1,44 |
jps |
ver o processo do Bootstrap se for o 14667 por exemplo colocar |
jstat -gcutil 14677 |
-gcutil Option |
Summary of Garbage Collection Statistics |
Column Description |
S0 Survivor space 0 utilization as a percentage of the space's current capacity. |
S1 Survivor space 1 utilization as a percentage of the space's current capacity. |
E Eden space utilization as a percentage of the space's current capacity. |
O Old space utilization as a percentage of the space's current capacity. |
P Permanent space utilization as a percentage of the space's current capacity. |
YGC Number of young generation GC events. |
YGCT Young generation garbage collection time. |
FGC Number of full GC events. |
FGCT Full garbage collection time. |
GCT Total garbage collection time. |
Isto vai ler o historico das classes criadas em tempo real no sistema e a memoria ocupada |
31849 >> processo |
jmap -histo -F 31849 |
Pagina de Gestão de Memória |
https://stackoverflow.com/questions/11339679/100-full-eden-space-0-used-survivor-space-garbage-collection-not-done |
-XX:NewRatio=3 - the young generation will occupy 1/4 the overall heap |
-XX:NewSize - Calculated automatically if you specify -XX:NewRatio |
-XX:MaxNewSize - The largest size the young generation can grow to (unlimited if this value is not specified at command line) |
-XX:SurvivorRatio=6 |
no tomcat so funcionou o 1 e o 4 comando |
https://docs.oracle.com/cd/E19900-01/819-4742/abeik/index.html |
conf do tomcat do Baco |
export CATALINA_OPTS="-Dfile.encoding=UTF-8 -Xmx2048m -Xms2048m -XX:PermSize=256m -XX:MaxPermSize=256m -server -XX:NewRatio=3 -XX:SurvivorRatio=6" |
/branches/v3/common/reflections/guava-15.0.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/branches/v3/common/reflections/annotations-2.0.1.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/branches/v3/common/reflections/javassist-3.19.0-GA.notNeeded |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/branches/v3/common/reflections/reflections-0.9.10.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |