You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(3) |
Jun
(1) |
Jul
(1) |
Aug
(3) |
Sep
(6) |
Oct
(1) |
Nov
|
Dec
(4) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(4) |
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(14) |
Sep
(9) |
Oct
(9) |
Nov
(15) |
Dec
(5) |
2022 |
Jan
(3) |
Feb
(13) |
Mar
(2) |
Apr
|
May
(3) |
Jun
(4) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
|
Nov
(7) |
Dec
(3) |
2023 |
Jan
(1) |
Feb
(3) |
Mar
(1) |
Apr
(4) |
May
(1) |
Jun
(5) |
Jul
(3) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2024 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <ma...@us...> - 2010-12-19 20:29:23
|
Revision: 1364 http://j-trac.svn.sourceforge.net/j-trac/?rev=1364&view=rev Author: magog96 Date: 2010-12-19 20:29:16 +0000 (Sun, 19 Dec 2010) Log Message: ----------- -Changed class documentation of JtracConfigurer class to a full JavaDoc comment including HTML lists -Some cleanup (basically did an rtrim on the lines to remove spaces and the end of lines) in JtracConfigurer and HibernateJtracDao class -Updated JavaDoc in Role class (still incomplete) Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/config/JtracConfigurer.java trunk/jtrac/src/main/java/info/jtrac/domain/Role.java trunk/jtrac/src/main/java/info/jtrac/hibernate/HibernateJtracDao.java Modified: trunk/jtrac/src/main/java/info/jtrac/config/JtracConfigurer.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/config/JtracConfigurer.java 2010-12-19 20:23:37 UTC (rev 1363) +++ trunk/jtrac/src/main/java/info/jtrac/config/JtracConfigurer.java 2010-12-19 20:29:16 UTC (rev 1364) @@ -34,42 +34,60 @@ import org.springframework.web.context.ServletContextAware; /** + * <p> * Custom extension of the Spring PropertyPlaceholderConfigurer that * sets up the jtrac.home System property (creates if required) and also creates * a default jtrac.properties file for HSQLDB - useful for those who want * to quickly evaluate JTrac. Just dropping the war into a servlet container * would work without the need to even configure a datasource. - * - * This class would effectively do nothing if a "jtrac.properties" file exists in jtrac.home - * - * 1) a "jtrac.home" property is looked for in /WEB-INF/classes/jtrac-init.properties - * 2) if not found, then a "jtrac.home" system property is checked for - * 3) then a servlet context init-parameter called "jtrac.home" is looked for - * 4) last resort, a ".jtrac" folder is created in the "user.home" and used as "jtrac.home" - * + * </p> + * <p> + * This class would effectively do nothing if a <code>jtrac.properties</code> file exists in jtrac.home + * </p> + * <ol> + * <li>A "jtrac.home" property is looked for in <code>/WEB-INF/classes/jtrac-init.properties</code></li> + * <li>if not found, then a <code>jtrac.home</code> system property is checked for</li> + * <li>then a servlet context init-parameter called <code>jtrac.home</code> is looked for</li> + * <li>last resort, a <code>.jtrac</code> folder is created in the <code>user.home</code> and used as <code>jtrac.home</code></li> + * </ol> + * + * <p> * Other tasks - * - initialize the "test" query for checking idle database connections - * - initialize list of available locales based on the properties files available - * + * </p> + * <ul> + * <li>initialize the "test" query for checking idle database connections</li> + * <li>initialize list of available locales based on the properties files available</li> + * </ul> + * + * <p> * Also playing an important role during startup are the following factory beans: - * - DataSourceFactoryBean: - * * switches between embedded HSQLDB or Apache DBCP (connection pool) - * * performs graceful shutdown of database if embedded HSQLDB - * - ProviderManagerFactoryBean - * * conditionally includes LDAP authentication if requested + * </p> + * <ul> + * <li>DataSourceFactoryBean:</li> + * <ul> + * <li>switches between embedded HSQLDB or Apache DBCP (connection pool)</li> + * <li>performs graceful shutdown of database if embedded HSQLDB</li> + * </ul> + * <li>ProviderManagerFactoryBean</li> + * <ul> + * <li>conditionally includes LDAP authentication if requested</li> + * </ul> + * </ul> * + * <p> * Note that later on during startup, the HibernateJtracDao would check if - * database tables exist, and if they dont, would proceed to create them + * database tables exist, and if they don't, would proceed to create them. + * </p> */ -public class JtracConfigurer extends PropertyPlaceholderConfigurer implements ServletContextAware { - +public class JtracConfigurer extends PropertyPlaceholderConfigurer implements ServletContextAware { + private ServletContext servletContext; - + public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } - + @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) { // do our custom configuration before spring gets a chance to @@ -80,9 +98,8 @@ } super.postProcessBeanFactory(beanFactory); } - + private void configureJtrac() throws Exception { - String jtracHome = null; ClassPathResource jtracInitResource = new ClassPathResource("jtrac-init.properties"); // jtrac-init.properties assumed to exist @@ -193,18 +210,25 @@ logger.info("jtrac.timestamp = '" + timestamp + "'"); props.setProperty("jtrac.version", version); props.setProperty("jtrac.timestamp", timestamp); + + /* + * TODO: A better way (default value) to check the database should be used for Apache DBCP. + * The current "SELECT...FROM DUAL" only works on Oracle (and MySQL). + * Other databases also support "SELECT 1+1" as query + * (e.g. PostgreSQL, Hypersonic 2 (H2), MySQL, etc.). + */ props.setProperty("database.validationQuery", "SELECT 1 FROM DUAL"); props.setProperty("ldap.url", ""); props.setProperty("ldap.activeDirectoryDomain", ""); props.setProperty("ldap.searchBase", ""); - props.setProperty("database.datasource.jndiname", ""); + props.setProperty("database.datasource.jndiname", ""); // set default properties that can be overridden by user if required setProperties(props); // finally set the property that spring is expecting, manually FileSystemResource fsr = new FileSystemResource(propsFile); setLocation(fsr); } - + private Properties loadProps(File file) throws Exception { InputStream is = null; Properties props = new Properties(); @@ -216,5 +240,4 @@ } return props; } - } Modified: trunk/jtrac/src/main/java/info/jtrac/domain/Role.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/Role.java 2010-12-19 20:23:37 UTC (rev 1363) +++ trunk/jtrac/src/main/java/info/jtrac/domain/Role.java 2010-12-19 20:29:16 UTC (rev 1364) @@ -27,19 +27,23 @@ /** * In addition to definition of custom fields, the Metadata - * for a Space may contain a bunch of Role defintions as well. + * for a Space may contain a bunch of Role definitions as well. * Roles do the following * - define the State Transitions possible (i.e. from status --> to status) * - for each State (from status) define the access permissions that this Role has per Field */ public class Role implements Serializable { + /** + * Generated UID + */ + private static final long serialVersionUID = 3661382262397738228L; private String name; private String description; - private Map<Integer, State> states = new HashMap<Integer, State>(); + private Map<Integer, State> states = new HashMap<Integer, State>(); public static final String ROLE_ADMIN = "ROLE_ADMIN"; - public static final String ROLE_GUEST = "ROLE_GUEST"; + public static final String ROLE_GUEST = "ROLE_GUEST"; public Role(String name) { this.name = name; @@ -47,53 +51,92 @@ public Role(Element e) { name = e.attributeValue(NAME); + for (Object o : e.elements(STATE)) { State state = new State((Element) o); states.put(state.getStatus(), state); - } + } // end for } - /* append this object onto an existing XML document */ + /** + * Append this object onto an existing XML document. + */ public void addAsChildOf(Element parent) { Element e = parent.addElement(ROLE); copyTo(e); } - /* marshal this object into a fresh new XML Element */ + /** + * Marshal this object into a fresh new XML element. + * */ public Element getAsElement() { Element e = XmlUtils.getNewElement(ROLE); copyTo(e); return e; } - /* copy object values into an existing XML Element */ - private void copyTo(Element e) { + /** + * Copy object values into an existing XML element. + * + * @param element The {@link Element} object to append. + */ + private void copyTo(Element element) { // appending empty strings to create new objects for "clone" support - e.addAttribute(NAME, name + ""); + element.addAttribute(NAME, name + ""); + for (State state : states.values()) { - state.addAsChildOf(e); - } + state.addAsChildOf(element); + } // end for } + /** + * This method is used to verify if the given roleKey matches the + * the role {@link #ROLE_ADMIN}. + * + * @param roleKey The roleKey string to check. + * @return Returns <code>true</code> if the roleKey matches the role + * {@link #ROLE_ADMIN}, otherwise <code>false</code>. + */ public static boolean isAdmin(String roleKey) { return ROLE_ADMIN.equals(roleKey); } + /** + * This method is used to verify if the given roleKey matches the + * the role {@link #ROLE_GUEST}. + * + * @param roleKey The roleKey string to check. + * @return Returns <code>true</code> if the roleKey matches the role + * {@link #ROLE_GUEST}, otherwise <code>false</code>. + */ public static boolean isGuest(String roleKey) { return ROLE_GUEST.equals(roleKey); - } + } + /** + * This method is used to verify if the given roleKey matches one of the + * reserved roles (system defined roles). + * + * @param roleKey The roleKey string to check. + * @return Returns <code>true</code> if the roleKey matches the one of the + * reserved roles, otherwise <code>false</code>. + */ public static boolean isReservedRoleKey(String roleKey) { - return ROLE_ADMIN.equals(roleKey) - || ROLE_GUEST.equals(roleKey); + return (ROLE_ADMIN.equals(roleKey) || ROLE_GUEST.equals(roleKey)); } - //======================================================================= - + /** + * + * @param state + */ public void add(State state) { states.put(state.getStatus(), state); } + /** + * + * @param stateId + */ public void removeState(int stateId) { states.remove(stateId); for(State s : states.values()) { @@ -101,36 +144,66 @@ } } - public boolean hasTransitionsFromState(int stateKey) { + /** + * + * @param stateKey + * @return + */ + public boolean hasTransitionsFromState(int stateKey) { return states.get(stateKey).getTransitions().size() > 0; } - //======================================================================= - + /** + * + * @return + */ public Map<Integer, State> getStates() { return states; } + /** + * + * @param states + */ public void setStates(Map<Integer, State> states) { this.states = states; } + /** + * + * @return + */ public String getDescription() { return description; } + /** + * + * @param description + */ public void setDescription(String description) { this.description = description; } + /** + * + * @return + */ public String getName() { return name; } + /** + * + * @param name + */ public void setName(String name) { this.name = name; } + /** + * + */ @Override public String toString() { StringBuffer sb = new StringBuffer(); @@ -139,5 +212,4 @@ sb.append("]"); return sb.toString(); } - } Modified: trunk/jtrac/src/main/java/info/jtrac/hibernate/HibernateJtracDao.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/hibernate/HibernateJtracDao.java 2010-12-19 20:23:37 UTC (rev 1363) +++ trunk/jtrac/src/main/java/info/jtrac/hibernate/HibernateJtracDao.java 2010-12-19 20:29:16 UTC (rev 1364) @@ -61,7 +61,7 @@ * DAO Implementation using Spring Hibernate template * note usage of the Spring "init-method" and "destroy-method" options */ -public class HibernateJtracDao extends HibernateDaoSupport implements JtracDao { +public class HibernateJtracDao extends HibernateDaoSupport implements JtracDao { private SchemaHelper schemaHelper; @@ -69,7 +69,7 @@ this.schemaHelper = schemaHelper; } - public void storeItem(Item item) { + public void storeItem(Item item) { getHibernateTemplate().merge(item); } @@ -77,7 +77,7 @@ return (Item) getHibernateTemplate().get(Item.class, id); } - public void storeHistory(History history) { + public void storeHistory(History history) { getHibernateTemplate().merge(history); } @@ -93,7 +93,7 @@ public List<Item> findItems(ItemSearch itemSearch) { int pageSize = itemSearch.getPageSize(); // TODO: if we are ordering by a custom column, we must load the whole - // list to do an in-memory sort. we need to find a better way + // list to do an in-memory sort. we need to find a better way Field.Name sortFieldName = Field.isValidName(itemSearch.getSortFieldName()) ? Field.convertToName(itemSearch.getSortFieldName()) : null; // only trigger the in-memory sort for drop-down fields and when querying within a space // UI currently does not allow you to sort by custom field when querying across spaces, but check again @@ -135,7 +135,7 @@ private void doInMemorySort(List<Item> list, ItemSearch itemSearch) { // we should never come here if search is across multiple spaces - final Field field = itemSearch.getSpace().getMetadata().getField(itemSearch.getSortFieldName()); + final Field field = itemSearch.getSpace().getMetadata().getField(itemSearch.getSortFieldName()); final ArrayList<String> valueList = new ArrayList<String>(field.getOptions().keySet()); Comparator<Item> comp = new Comparator<Item>() { public int compare(Item left, Item right) { @@ -150,7 +150,7 @@ }; Collections.sort(list, itemSearch.isSortDescending() ? ComparatorUtils.reversedComparator(comp) : comp); } - + public int loadCountOfAllItems() { return (Integer) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) { @@ -161,28 +161,28 @@ }); } - public List<Item> findAllItems(final int firstResult, final int batchSize) { + public List<Item> findAllItems(final int firstResult, final int batchSize) { return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) { session.clear(); Criteria criteria = session.createCriteria(Item.class); - criteria.setCacheMode(CacheMode.IGNORE); + criteria.setCacheMode(CacheMode.IGNORE); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); - criteria.setFetchMode("history", FetchMode.JOIN); + criteria.setFetchMode("history", FetchMode.JOIN); criteria.add(Restrictions.ge("id", (long) firstResult)); - criteria.add(Restrictions.lt("id", (long) firstResult + batchSize)); + criteria.add(Restrictions.lt("id", (long) firstResult + batchSize)); return criteria.list(); } - }); + }); } public void removeItem(Item item) { getHibernateTemplate().delete(item); - } + } public void removeItemItem(ItemItem itemItem) { getHibernateTemplate().delete(itemItem); - } + } public List<ItemUser> findItemUsersByUser(User user) { return getHibernateTemplate().find("from ItemUser iu where iu.user = ?", user); @@ -214,20 +214,20 @@ public UserSpaceRole loadUserSpaceRole(long id) { return (UserSpaceRole) getHibernateTemplate().get(UserSpaceRole.class, id); - } + } public long loadNextSequenceNum(final long spaceSequenceId) { return (Long) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) { session.flush(); session.setCacheMode(CacheMode.IGNORE); - SpaceSequence ss = (SpaceSequence) session.get(SpaceSequence.class, spaceSequenceId); + SpaceSequence ss = (SpaceSequence) session.get(SpaceSequence.class, spaceSequenceId); long next = ss.getAndIncrement(); session.update(ss); session.flush(); return next; } - }); + }); } public void storeSpaceSequence(SpaceSequence spaceSequence) { @@ -252,12 +252,12 @@ } public List<Space> findSpacesWhereGuestAllowed() { - return getHibernateTemplate().find("from Space space join fetch space.metadata where space.guestAllowed = true"); + return getHibernateTemplate().find("from Space space join fetch space.metadata where space.guestAllowed = true"); } - public void removeSpace(Space space) { + public void removeSpace(Space space) { getHibernateTemplate().delete(space); - } + } public void storeUser(User user) { getHibernateTemplate().merge(user); @@ -279,7 +279,7 @@ return getHibernateTemplate().findByNamedParam("from User user where user.id in (:ids)", "ids", ids); } - public List<User> findUsersMatching(final String searchText, final String searchOn) { + public List<User> findUsersMatching(final String searchText, final String searchOn) { return (List<User>) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) { Criteria criteria = session.createCriteria(User.class); @@ -312,7 +312,7 @@ public List<User> findUsersWithRoleForSpace(long spaceId, String roleKey) { return getHibernateTemplate().find("from User user" + " join user.userSpaceRoles as usr where usr.space.id = ?" - + " and usr.roleKey = ? order by user.name", new Object[] {spaceId, roleKey}); + + " and usr.roleKey = ? order by user.name", new Object[] {spaceId, roleKey}); } public List<UserSpaceRole> findSpaceRolesForUser(long userId) { @@ -330,10 +330,10 @@ public int loadCountOfHistoryInvolvingUser(User user) { Long count = (Long) getHibernateTemplate().find("select count(history) from History history where " + " history.loggedBy = ? or history.assignedTo = ?", new Object[] {user, user}).get(0); - return count.intValue(); + return count.intValue(); } - //========================================================================== + //========================================================================== public CountsHolder loadCountsForUser(User user) { Collection<Space> spaces = user.getSpaces(); @@ -341,7 +341,7 @@ return null; } CountsHolder ch = new CountsHolder(); - HibernateTemplate ht = getHibernateTemplate(); + HibernateTemplate ht = getHibernateTemplate(); List<Object[]> loggedByList = ht.find("select item.space.id, count(item) from Item item" + " where item.loggedBy.id = ? group by item.space.id", user.getId()); List<Object[]> assignedToList = ht.find("select item.space.id, count(item) from Item item" @@ -361,7 +361,7 @@ } public Counts loadCountsForUserSpace(User user, Space space) { - HibernateTemplate ht = getHibernateTemplate(); + HibernateTemplate ht = getHibernateTemplate(); List<Object[]> loggedByList = ht.find("select status, count(item) from Item item" + " where item.loggedBy.id = ? and item.space.id = ? group by item.status", new Object[] {user.getId(), space.getId()}); List<Object[]> assignedToList = ht.find("select status, count(item) from Item item" @@ -393,7 +393,7 @@ + " where usr.space in (:spaces) order by u.name", "spaces", spaces); } - public void removeUserSpaceRole(UserSpaceRole userSpaceRole) { + public void removeUserSpaceRole(UserSpaceRole userSpaceRole) { getHibernateTemplate().delete(userSpaceRole); } @@ -408,7 +408,7 @@ public Config loadConfig(String param) { return (Config) getHibernateTemplate().get(Config.class, param); } - + public int loadCountOfRecordsHavingFieldNotNull(Space space, Field field) { Criteria criteria = getSession().createCriteria(Item.class); criteria.add(Restrictions.eq("space", space)); @@ -421,9 +421,9 @@ criteria.createCriteria("parent").add(Restrictions.eq("space", space)); criteria.add(Restrictions.isNotNull(field.getName().toString())); criteria.setProjection(Projections.rowCount()); - return itemCount + (Integer) criteria.list().get(0); + return itemCount + (Integer) criteria.list().get(0); } - + public int bulkUpdateFieldToNull(Space space, Field field) { int itemCount = getHibernateTemplate().bulkUpdate("update Item item set item." + field.getName() + " = null" + " where item.space.id = ?", space.getId()); @@ -433,7 +433,7 @@ logger.info("no of History rows where " + field.getName() + " set to null = " + historyCount); return itemCount; } - + public int loadCountOfRecordsHavingFieldWithValue(Space space, Field field, int optionKey) { Criteria criteria = getSession().createCriteria(Item.class); criteria.add(Restrictions.eq("space", space)); @@ -446,9 +446,9 @@ criteria.createCriteria("parent").add(Restrictions.eq("space", space)); criteria.add(Restrictions.eq(field.getName().toString(), optionKey)); criteria.setProjection(Projections.rowCount()); - return itemCount + (Integer) criteria.list().get(0); + return itemCount + (Integer) criteria.list().get(0); } - + public int bulkUpdateFieldToNullForValue(Space space, Field field, int optionKey) { int itemCount = getHibernateTemplate().bulkUpdate("update Item item set item." + field.getName() + " = null" + " where item.space.id = ?" @@ -458,7 +458,7 @@ + " where history." + field.getName() + " = ?" + " and history.parent in ( from Item item where item.space.id = ? )", new Object[] {optionKey, space.getId()}); logger.info("no of History rows where " + field.getName() + " value '" + optionKey + "' replaced with null = " + historyCount); - return itemCount; + return itemCount; } public int loadCountOfRecordsHavingStatus(Space space, int status) { @@ -474,7 +474,7 @@ criteria.add(Restrictions.eq("status", status)); criteria.setProjection(Projections.rowCount()); return itemCount + (Integer) criteria.list().get(0); - } + } public int bulkUpdateStatusToOpen(Space space, int status) { int itemCount = getHibernateTemplate().bulkUpdate("update Item item set item.status = " + State.OPEN @@ -485,7 +485,7 @@ + " and history.parent in ( from Item item where item.space.id = ? )", new Object[] {status, space.getId()}); logger.info("no of History rows where status changed from " + status + " to " + State.OPEN + " = " + historyCount); return itemCount; - } + } public int bulkUpdateRenameSpaceRole(Space space, String oldRoleKey, String newRoleKey) { return getHibernateTemplate().bulkUpdate("update UserSpaceRole usr set usr.roleKey = ?" @@ -494,7 +494,7 @@ public int bulkUpdateDeleteSpaceRole(Space space, String roleKey) { if (roleKey == null) { - return getHibernateTemplate().bulkUpdate("delete UserSpaceRole usr where usr.space.id = ?", space.getId()); + return getHibernateTemplate().bulkUpdate("delete UserSpaceRole usr where usr.space.id = ?", space.getId()); } else { return getHibernateTemplate().bulkUpdate("delete UserSpaceRole usr" + " where usr.space.id = ? and usr.roleKey = ?", new Object[] {space.getId(), roleKey}); @@ -524,7 +524,7 @@ getHibernateTemplate().find("from Item item where item.id = 1"); logger.info("database schema exists, normal startup"); } catch (Exception e) { - logger.warn("expected database schema does not exist, will create. Error is: " + e.getMessage()); + logger.warn("expected database schema does not exist, will create. Error is: " + e.getMessage()); schemaHelper.createSchema(); User admin = new User(); admin.setLoginName("admin"); @@ -534,7 +534,7 @@ admin.addSpaceWithRole(null, Role.ROLE_ADMIN); logger.info("inserting default admin user into database"); storeUser(admin); - logger.info("schema creation complete"); + logger.info("schema creation complete"); } List<SpaceSequence> ssList = getHibernateTemplate().loadAll(SpaceSequence.class); Map<Long, SpaceSequence> ssMap = new HashMap<Long, SpaceSequence>(ssList.size()); @@ -553,7 +553,7 @@ ss.setNextSeqNum(maxSeqNum + 1); getHibernateTemplate().update(ss); } - } - } + } + } -} +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2010-12-19 20:23:44
|
Revision: 1363 http://j-trac.svn.sourceforge.net/j-trac/?rev=1363&view=rev Author: magog96 Date: 2010-12-19 20:23:37 +0000 (Sun, 19 Dec 2010) Log Message: ----------- Added complete JavaDoc documentation to the DataSourceFactoryBean and SchemaHelper classes. Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/config/DataSourceFactoryBean.java trunk/jtrac/src/main/java/info/jtrac/hibernate/SchemaHelper.java Modified: trunk/jtrac/src/main/java/info/jtrac/config/DataSourceFactoryBean.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/config/DataSourceFactoryBean.java 2010-12-19 20:19:30 UTC (rev 1362) +++ trunk/jtrac/src/main/java/info/jtrac/config/DataSourceFactoryBean.java 2010-12-19 20:23:37 UTC (rev 1363) @@ -29,61 +29,142 @@ import org.springframework.util.StringUtils; /** - * spring factory bean to conditionally create the right data source - * either embedded or apache dbcp or JNDI datasource + * <p> + * This class implements the Spring frameworks + * {@link org.springframework.beans.factory.FactoryBean} as well as the + * {@link org.springframework.beans.factory.DisposableBean} to conditionally + * create the correct <code>DataSource</code> object to access the database. + * </p> + * + * Supported data sources are: + * <ul> + * <li><a href="http://hsqldb.org/">HSQLDB (embedded)</a></li> + * <li><a href="http://commons.apache.org/dbcp/">Apache DBCP</a></li> + * <li>Java Naming and Directory Interface (JNDI); supported by most JDBC + * database drivers</li> + * </ul> */ public class DataSourceFactoryBean implements FactoryBean, DisposableBean { - + /** + * Logger object + */ private final Logger logger = LoggerFactory.getLogger(getClass()); + /** + * DB driver class name + */ private String driverClassName; + + /** + * DB url + */ private String url; + + /** + * DB user + */ private String username; + + /** + * DB password + */ private String password; + + /** + * DB queries used to check if the database can be accessed + */ private String validationQuery; + + /** + * DB JNDI data source name + */ private String dataSourceJndiName; - private DataSource dataSource; - + /** + * DB JNDI data source object + */ + private DataSource dataSource; + + /** + * This method allows to store the name of the DB driver class. + * + * @param driverClassName The name of the DB driver class. + */ public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } - + + /** + * This method allows to store the DB url. + * + * @param url The DB url. + */ public void setUrl(String url) { this.url = url; } - + + /** + * This method allows to store the DB user. + * + * @param username The DB user. + */ public void setUsername(String username) { this.username = username; } - + + /** + * This method allows to store the DB password. + * + * @param password The DB password. + */ public void setPassword(String password) { this.password = password; } - + + /** + * This method allows to store the SQL query string used to check if + * the DB connection is working. + * + * @param validationQuery The SQL query used to validate if the DB + * connection is working. + */ public void setValidationQuery(String validationQuery) { this.validationQuery = validationQuery; } - + + /** + * This method allows to store the JNDI data source name. + * + * @param dataSourceJndiName The JNDI data source name. + */ public void setDataSourceJndiName(String dataSourceJndiName) { this.dataSourceJndiName = dataSourceJndiName; - } + } + /** + * This method returns the dataSource object used for the DB access. + * + * @throws Exception + * @see org.springframework.beans.factory.FactoryBean#getObject() + */ public Object getObject() throws Exception { if(StringUtils.hasText(dataSourceJndiName)) { logger.info("JNDI datasource requested, looking up datasource from JNDI name: '" + dataSourceJndiName + "'"); JndiObjectFactoryBean factoryBean = new JndiObjectFactoryBean(); factoryBean.setJndiName(dataSourceJndiName); + // "java:comp/env/" will be prefixed if the JNDI name doesn't already have it factoryBean.setResourceRef(true); - // this step actually does the JNDI lookup + + // This step actually does the JNDI lookup try { factoryBean.afterPropertiesSet(); } catch(Exception e) { logger.error("datasource init from JNDI failed : " + e); logger.error("aborting application startup"); throw new RuntimeException(e); - } + } // end try..catch + dataSource = (DataSource) factoryBean.getObject(); } else if(url.startsWith("jdbc:hsqldb:file")) { logger.info("embedded HSQLDB mode detected, switching on spring single connection data source"); @@ -93,7 +174,7 @@ ds.setUsername(username); ds.setPassword(password); ds.setSuppressClose(true); - dataSource = ds; + dataSource = ds; } else { logger.info("Not using embedded HSQLDB or JNDI datasource, switching on Apache DBCP data source connection pooling"); BasicDataSource ds = new BasicDataSource(); @@ -104,20 +185,42 @@ ds.setValidationQuery(validationQuery); ds.setTestOnBorrow(false); ds.setTestWhileIdle(true); - ds.setTimeBetweenEvictionRunsMillis(600000); + ds.setTimeBetweenEvictionRunsMillis(600000); dataSource = ds; - } + } // end if..else + return dataSource; } - + + /** + * This method returns the class name of the DataSource object which can be + * used to determine which data source implementation is currently used. + * + * @return Returns the class name <code>Object.class</code> of the + * DataSource object. + * @see org.springframework.beans.factory.FactoryBean#getObjectType() + */ public Class getObjectType() { return DataSource.class; } - + + /** + * This method returns if the factory is implemented as Singleton. + * + * @return Returns if the factory is implemented as Singleton or not. + * @see org.springframework.beans.factory.FactoryBean#isSingleton() + */ public boolean isSingleton() { return true; - } - + } + + /** + * This method is called to clean up the references when the object is + * destroyed. + * + * @throws Exception + * @see org.springframework.beans.factory.DisposableBean#destroy() + */ public void destroy() throws Exception { if(dataSource instanceof SingleConnectionDataSource) { logger.info("attempting to shut down embedded HSQLDB database"); @@ -133,7 +236,6 @@ logger.info("Apache DBCP data source closed successfully"); } else { logger.info("context shutting down for JNDI datasource"); - } + } // end if..else } - } Modified: trunk/jtrac/src/main/java/info/jtrac/hibernate/SchemaHelper.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/hibernate/SchemaHelper.java 2010-12-19 20:19:30 UTC (rev 1362) +++ trunk/jtrac/src/main/java/info/jtrac/hibernate/SchemaHelper.java 2010-12-19 20:23:37 UTC (rev 1363) @@ -23,70 +23,144 @@ import org.springframework.util.StringUtils; /** - * Utilities to create the database schema, drop and create tables - * Uses Hibernate Schema tools - * Used normally at application first start + * <p> + * Utilities to create the database schema, drop and create tables by using + * the Hibernate schema tools. + * </p> + * <p> + * This method is normally called at the first start of the application to + * initialize the database. + * </p> */ public class SchemaHelper { - + /** + * Logger object + */ private final Logger logger = LoggerFactory.getLogger(getClass()); + /** + * DB driver class name + */ private String driverClassName; + + /** + * DB url + */ private String url; + + /** + * DB user + */ private String username; + + /** + * DB password + */ private String password; + + /** + * DB hibernate dialect + */ private String hibernateDialect; + + /** + * DB JNDI data source name + */ private String dataSourceJndiName; - private String[] mappingResources; - + + /** + * Mapping information + */ + private String[] mappingResources; + + /** + * This method allows to store the name of the DB driver class. + * + * @param driverClassName The name of the DB driver class. + */ public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } - + + /** + * This method allows to store the Hibernate dialect required for the + * specified database. You can find the list of supported dialects in the + * Hibernate documentation. + * + * @param hibernateDialect The dialect name supported by Hibernate. + */ public void setHibernateDialect(String hibernateDialect) { this.hibernateDialect = hibernateDialect; } + /** + * This method allows to store multiple mapping resources. + * + * @param mappingResources The String array of mapping Resources. + */ public void setMappingResources(String[] mappingResources) { this.mappingResources = mappingResources; - } + } + /** + * This method allows to store the DB url. + * + * @param url The DB url. + */ public void setUrl(String url) { this.url = url; } - + + /** + * This method allows to store the DB user. + * + * @param username The DB user. + */ public void setUsername(String username) { this.username = username; } - + + /** + * This method allows to store the DB password. + * + * @param password The DB password. + */ public void setPassword(String password) { this.password = password; } - + + /** + * This method allows to store the JNDI data source name. + * + * @param dataSourceJndiName The JNDI data source name. + */ public void setDataSourceJndiName(String dataSourceJndiName) { this.dataSourceJndiName = dataSourceJndiName; - } + } /** - * create tables using the given Hibernate configuration + * Create tables using the given Hibernate configuration data. */ public void createSchema() { Configuration cfg = new Configuration(); + if(StringUtils.hasText(dataSourceJndiName)) { cfg.setProperty("hibernate.connection.datasource", dataSourceJndiName); } else { - cfg.setProperty("hibernate.connection.driver_class", driverClassName); + cfg.setProperty("hibernate.connection.driver_class", driverClassName); cfg.setProperty("hibernate.connection.url", url); cfg.setProperty("hibernate.connection.username", username); cfg.setProperty("hibernate.connection.password", password); - } - cfg.setProperty("hibernate.dialect", hibernateDialect); + } // end if..else + + cfg.setProperty("hibernate.dialect", hibernateDialect); + for (String resource : mappingResources) { cfg.addResource(resource); - } + } // end for + logger.info("begin database schema creation ========================="); new SchemaUpdate(cfg).execute(true, true); logger.info("end database schema creation ==========================="); } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2010-12-19 20:19:37
|
Revision: 1362 http://j-trac.svn.sourceforge.net/j-trac/?rev=1362&view=rev Author: magog96 Date: 2010-12-19 20:19:30 +0000 (Sun, 19 Dec 2010) Log Message: ----------- Some cleanup (basically did an rtrim on the lines to remove spaces and the end of lines) Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/webapp/WEB-INF/applicationContext.xml Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2010-10-05 11:54:21 UTC (rev 1361) +++ trunk/jtrac/pom.xml 2010-12-19 20:19:30 UTC (rev 1362) @@ -1,26 +1,25 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> <groupId>info.jtrac</groupId> <artifactId>jtrac</artifactId> <packaging>war</packaging> <version>2.2.0</version> - <name>JTrac</name> + <name>JTrac</name> <description> JTrac is a generic issue-tracking web-application that can be easily customized by adding custom fields and drop-downs. Features include customizable workflow, field level permissions, e-mail integration, file attachments and a detailed history view. </description> <url>http://jtrac.info</url> - + <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>license.txt</url> </license> </licenses> - + <scm> <connection>scm:svn:https://j-trac.svn.sourceforge.net/svnroot/j-trac/trunk/jtrac</connection> <url>http://j-trac.svn.sourceforge.net/viewvc/j-trac/trunk/jtrac/</url> @@ -31,9 +30,9 @@ <id>website</id> <url>scp://shell.sourceforge.net/home/groups/j/j-/j-trac/htdocs</url> </site> - </distributionManagement> + </distributionManagement> - <mailingLists> + <mailingLists> <mailingList> <name>JTrac Mailing List</name> <subscribe>https://lists.sourceforge.net/lists/listinfo/j-trac-users</subscribe> @@ -42,32 +41,32 @@ <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=j-trac-users</archive> <otherArchives> <otherArchive>http://www.nabble.com/j-trac-users-f20276.html</otherArchive> - </otherArchives> - </mailingList> - </mailingLists> + </otherArchives> + </mailingList> + </mailingLists> <developers> <developer> <name>Peter Thomas</name> <id>ptrthomas</id> - <url>http://ptrthomas.wordpress.com</url> + <url>http://ptrthomas.wordpress.com</url> <timezone>+5.5</timezone> </developer> <developer> <name>Manfred Wolff</name> <id>manfredwolff</id> - <url>http://pointers.de</url> + <url>http://pointers.de</url> <timezone>+1</timezone> - </developer> + </developer> </developers> - + <repositories> <repository> <id>openqa.org</id> - <name>selenium snapshot</name> + <name>selenium snapshot</name> <url>http://nexus.openqa.org/content/repositories/releases</url> - </repository> - </repositories> + </repository> + </repositories> <dependencies> <dependency> @@ -97,9 +96,9 @@ <exclusion> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> - </exclusion> - </exclusions> - </dependency> + </exclusion> + </exclusions> + </dependency> <dependency> <groupId>org.acegisecurity</groupId> <artifactId>acegi-security</artifactId> @@ -132,7 +131,7 @@ <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> - </exclusion> + </exclusion> </exclusions> </dependency> <dependency> @@ -140,7 +139,7 @@ <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> - </dependency> + </dependency> <dependency> <groupId>jfree</groupId> <artifactId>jfreechart</artifactId> @@ -150,8 +149,8 @@ <groupId>gnujaxp</groupId> <artifactId>gnujaxp</artifactId> </exclusion> - </exclusions> - </dependency> + </exclusions> + </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> @@ -168,8 +167,8 @@ <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>geronimo-spec</groupId> @@ -181,7 +180,7 @@ <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> - </dependency> + </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> @@ -198,8 +197,8 @@ <!--exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> - </exclusion--> - </exclusions> + </exclusion--> + </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> @@ -233,8 +232,8 @@ <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> @@ -249,8 +248,8 @@ <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.springmodules</groupId> @@ -272,11 +271,11 @@ <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> - </exclusion> + </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> - </exclusion> + </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> @@ -296,7 +295,7 @@ <exclusion> <groupId>org.apache</groupId> <artifactId>poi</artifactId> - </exclusion> + </exclusion> <exclusion> <groupId>org.apache</groupId> <artifactId>poi-scratchpad</artifactId> @@ -308,7 +307,7 @@ <exclusion> <groupId>cglib</groupId> <artifactId>cglib-nodep</artifactId> - </exclusion> + </exclusion> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> @@ -316,36 +315,36 @@ <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> - </exclusion> - </exclusions> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket</artifactId> - <version>1.3.7</version> - </dependency> + <version>1.3.7</version> + </dependency> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-extensions</artifactId> - <version>1.3.7</version> + <version>1.3.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.4.2</version> <scope>runtime</scope> - </dependency> + </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl104-over-slf4j</artifactId> <version>1.4.2</version> <scope>runtime</scope> - </dependency> + </dependency> <dependency> <groupId>poi</groupId> <artifactId>poi</artifactId> - <version>2.5.1-final-20040804</version> - </dependency> + <version>2.5.1-final-20040804</version> + </dependency> <dependency> <groupId>org.tmate</groupId> <artifactId>javasvn</artifactId> @@ -355,14 +354,14 @@ <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> </exclusion> - </exclusions> + </exclusions> </dependency> <dependency> <groupId>org.beanshell</groupId> <artifactId>bsh</artifactId> <version>2.0b4</version> <scope>runtime</scope> - </dependency> + </dependency> <dependency> <groupId>hsqldb</groupId> <artifactId>hsqldb</artifactId> @@ -378,19 +377,19 @@ <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> - </exclusion> + </exclusion> </exclusions> - </dependency> + </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> - <version>1.2.2</version> + <version>1.2.2</version> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> - </exclusions> + </exclusions> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> @@ -402,20 +401,20 @@ <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> - </exclusions> - </dependency> + </exclusions> + </dependency> <dependency> <groupId>org.openqa.selenium.client-drivers</groupId> <artifactId>selenium-java-client-driver</artifactId> - <version>0.9.0</version> + <version>0.9.0</version> <scope>test</scope> - </dependency> + </dependency> <dependency> <groupId>org.openqa.selenium.server</groupId> <artifactId>selenium-server</artifactId> - <version>0.9.0</version> + <version>0.9.0</version> <scope>test</scope> - </dependency> + </dependency> </dependencies> <build> @@ -424,18 +423,18 @@ <resources> <resource> <directory>src/main/resources</directory> - <includes> + <includes> <include>**</include> </includes> - </resource> + </resource> <resource> <directory>src/main/java</directory> - <includes> + <includes> <include>**</include> </includes> - <excludes> + <excludes> <exclude>**/*.java</exclude> - </excludes> + </excludes> </resource> </resources> <plugins> @@ -463,21 +462,21 @@ --> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> + <artifactId>maven-surefire-plugin</artifactId> <configuration> <excludes> <exclude>info/jtrac/selenium/**</exclude> - <exclude>info/jtrac/test/**</exclude> + <exclude>info/jtrac/test/**</exclude> </excludes> </configuration> - </plugin> + </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <configuration> <templateFile>src/site/resources/template/maven-site.vm</templateFile> </configuration> - </plugin> + </plugin> </plugins> </build> </project> Modified: trunk/jtrac/src/main/webapp/WEB-INF/applicationContext.xml =================================================================== --- trunk/jtrac/src/main/webapp/WEB-INF/applicationContext.xml 2010-10-05 11:54:21 UTC (rev 1361) +++ trunk/jtrac/src/main/webapp/WEB-INF/applicationContext.xml 2010-12-19 20:19:30 UTC (rev 1362) @@ -4,24 +4,23 @@ <!-- application context / root Spring IoC container config for JTrac --> <beans> - <!-- custom Configurer that extends the spring PropertyPlaceholderConfigurer --> - <bean class="info.jtrac.config.JtracConfigurer"/> - + <bean class="info.jtrac.config.JtracConfigurer"/> + <!-- this Acegi helper finds its way into our root Spring context because JtracImpl depends on it --> <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"/> - + <!-- i18n message source --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="messages"/> - </bean> + </bean> <!-- the business service tier / facade is behind an AOP interceptor (see "target" property) only the update operations require transactions across multiple dao update operations --> <bean id="jtrac" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> - <property name="transactionManager" ref="transactionManager"/> - <property name="target"> + <property name="transactionManager" ref="transactionManager"/> + <property name="target"> <bean class="info.jtrac.JtracImpl" init-method="init"> <property name="dao" ref="dao"/> <property name="passwordEncoder" ref="passwordEncoder"/> @@ -33,22 +32,22 @@ <property name="releaseTimestamp" value="${jtrac.timestamp}"/> <property name="jtracHome" value="${jtrac.home}"/> </bean> - </property> + </property> <property name="transactionAttributes"> - <props> + <props> <prop key="store*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> - <prop key="remove*">PROPAGATION_REQUIRED</prop> + <prop key="remove*">PROPAGATION_REQUIRED</prop> <prop key="bulkUpdate*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_SUPPORTS,readOnly</prop> </props> - </property> - </bean> + </property> + </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> - + <!-- custom factory bean that uses spring single connection data source if embedded HSQLDB is being used, else Apache DBCP with connection pooling --> <bean id="dataSource" class="info.jtrac.config.DataSourceFactoryBean"> @@ -58,16 +57,16 @@ <property name="password" value="${database.password}"/> <property name="validationQuery" value="${database.validationQuery}"/> <property name="dataSourceJndiName" value="${database.datasource.jndiname}"/> - </bean> - + </bean> + <!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mappingResources" value="jtrac.hbm.xml"/> <property name="hibernateProperties"> <props> - <prop key="hibernate.dialect">${hibernate.dialect}</prop> - <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> + <prop key="hibernate.dialect">${hibernate.dialect}</prop> + <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> </props> </property> <property name="eventListeners"> @@ -86,24 +85,22 @@ <property name="sessionFactory" ref="sessionFactory"/> <property name="flushMode"> <bean id="org.springframework.orm.hibernate3.HibernateAccessor.FLUSH_COMMIT" - class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"/> + class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"/> </property> </bean> - </property> + </property> <!-- <property name="sessionFactory" ref="sessionFactory"/> --> <property name="schemaHelper"> - <bean class="info.jtrac.hibernate.SchemaHelper"> + <bean class="info.jtrac.hibernate.SchemaHelper"> <property name="mappingResources" value="jtrac.hbm.xml"/> <property name="driverClassName" value="${database.driver}"/> <property name="url" value="${database.url}"/> <property name="username" value="${database.username}"/> <property name="password" value="${database.password}"/> - <property name="hibernateDialect" value="${hibernate.dialect}"/> + <property name="hibernateDialect" value="${hibernate.dialect}"/> <property name="dataSourceJndiName" value="${database.datasource.jndiname}"/> - </bean> + </bean> </property> - </bean> + </bean> -</beans> - - +</beans> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-10-05 11:54:28
|
Revision: 1361 http://j-trac.svn.sourceforge.net/j-trac/?rev=1361&view=rev Author: manfredwolff Date: 2010-10-05 11:54:21 +0000 (Tue, 05 Oct 2010) Log Message: ----------- Message properties for rest web services (service not tested at the end but the properties does not matter) Modified Paths: -------------- trunk/jtrac/src/main/resources/messages.properties trunk/jtrac/src/main/resources/messages_en.properties trunk/jtrac/src/main/resources/messages_es_MX.properties Modified: trunk/jtrac/src/main/resources/messages.properties =================================================================== --- trunk/jtrac/src/main/resources/messages.properties 2010-09-20 06:29:47 UTC (rev 1360) +++ trunk/jtrac/src/main/resources/messages.properties 2010-10-05 11:54:21 UTC (rev 1361) @@ -440,4 +440,13 @@ item_filter.notEqual = not equal to item_filter.greaterThan = greater than item_filter.lessThan = less than -item_filter.between = between \ No newline at end of file +item_filter.between = between + +# rest API messages +rest_multi_action_controller.anExceptionOcurred.error=An exception ocurred.\ +rest_multi_action_controller.itemNotFound.error=Item not found:\ +rest_multi_action_controller.newStatusNotPermitted.error=The new status is not permitted from the current status +rest_multi_action_controller.requiredParameterNotFound.error=The required parameter was not found in the request:\ +rest_multi_action_controller.spaceNotFound.error=Space not found:\ +rest_multi_action_controller.userNotAbleToTransition.error=The user is not authorized to do the transition from the current status to the new status:\ +rest_multi_action_controller.userNotRegistered.error=User not registered:\ Modified: trunk/jtrac/src/main/resources/messages_en.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_en.properties 2010-09-20 06:29:47 UTC (rev 1360) +++ trunk/jtrac/src/main/resources/messages_en.properties 2010-10-05 11:54:21 UTC (rev 1361) @@ -440,4 +440,13 @@ item_filter.notEqual = not equal to item_filter.greaterThan = greater than item_filter.lessThan = less than -item_filter.between = between \ No newline at end of file +item_filter.between = between + +# rest API messages +rest_multi_action_controller.anExceptionOcurred.error=An exception ocurred.\ +rest_multi_action_controller.itemNotFound.error=Item not found:\ +rest_multi_action_controller.newStatusNotPermitted.error=The new status is not permitted from the current status +rest_multi_action_controller.requiredParameterNotFound.error=The required parameter was not found in the request:\ +rest_multi_action_controller.spaceNotFound.error=Space not found:\ +rest_multi_action_controller.userNotAbleToTransition.error=The user is not authorized to do the transition from the current status to the new status:\ +rest_multi_action_controller.userNotRegistered.error=User not registered:\ Modified: trunk/jtrac/src/main/resources/messages_es_MX.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_es_MX.properties 2010-09-20 06:29:47 UTC (rev 1360) +++ trunk/jtrac/src/main/resources/messages_es_MX.properties 2010-10-05 11:54:21 UTC (rev 1361) @@ -9,10 +9,12 @@ back=Atr\xE1s cancel=Cancelar config.attachment.maxsize=Tama\xF1o m\xE1ximo en MB de los archivos adjuntos. (predeterminado en 5 MB) Use -1 para no tener l\xEDmite +config.jtrac.edit.item=\xBFDeber\xEDa el propietario de la tarea editar sus elementos (incidencias)? +config.jtrac.header.picture=Imagen de encabezado individual +config.jtrac.header.text=Texto de encabezado individual config.jtrac.url.base=URL base de la instalaci\xF3n JTrac (p.e. http://miservidor/jtrac), requerido para el funcionamiento correcto de los enlaces en los e-mails config.locale.default=Lenguaje predeterminado usado en esta instalaci\xE9n de JTrac (e.g. "es" para Espa\xF1ol) config.mail.from=Cuando se genere un e-mail, esta ser\xE1 la direcci\xF3n remitente ('from') - # config explanations (used in both config_list and config_form screens) config.mail.server.host=Nombre del Host o direcci\xF3n IP del servidor SMTP usado para el env\xEDo de e-mail config.mail.server.password=Contrase\xF1a para el servidor SMTP, si este requiere autenticaci\xF3n @@ -20,9 +22,9 @@ config.mail.server.starttls.enable=Usar "true" para conexiones seguras (SSL) , si se requiere en el servidor SMTP config.mail.server.username=Nombre de usuario para el servidor SMTP, si este requiere autenticaci\xF3n config.mail.session.jndiname=javax.mail.Session nombre JNDI - Si est\xE1 presente, \xE9ste ser\xE1 usado en lugar de los detalles del servidor SMTP de arriba +config.mail.smtp.localhost=Texto para la configuraci\xF3n HELO de pasarelas SMTP muy estrictas config.mail.subject.prefix=Texto prefijo para el asunto de los e-mail (predeterminado [jtrac]) config.session.timeout=Tiempo en minutos despu\xE9s del cual expira la sesi\xF3n de usuario (predeterminado en 30 minutos) - # config_list (config_form does not have any extra messages) config_list.configurationSettings=Configuraci\xF3n config_list.description=Descripci\xF3n @@ -35,7 +37,6 @@ dashboard.hideDetails=Ocultar Detalles dashboard.loggedByMe=Registrado<br/>Por M\xED dashboard.new=NUEVO - # dashboard dashboard.noSpaces=No est\xE1 asignado a ning\xFAn Espacio dashboard.search=BUSCAR @@ -44,12 +45,10 @@ dashboard.status=Estado delete=Borrar edit=Editar - # generic form validation message error.empty=Valor requerido error.itemBelongsToUnallocatedSpace=No tiene permiso para ver este elemento excel_upload.error.invalidFile=Error procesando el archivo, puede que no sea un archivo Excel v\xE1lido. - # excel_upload excel_upload.uploadExcelFile=Subir archivo Excel excel_view.columnData=Datos de Columna @@ -75,7 +74,6 @@ excel_view.mapToField=Mapear Columna Seleccionada a Campo de Espacio excel_view.noSpaceSelected=(espacio no seleccionado) excel_view.preview=Previsualizar - # excel_view excel_view.previewImportedData=Previsualizaci\xF3n de los Datos Importados excel_view.selectActionToPerform=seleccione la acci\xF3n a realizar @@ -86,10 +84,8 @@ exception_flow.line1=Boton 'atr\xE1s' del navegador / refresco de p\xE1gina - no implementado en esta versi\xF3n. exception_flow.line2=Este error no es recuperable y debe reiniciar su navegaci\xF3n previa. exception_flow.line3=Para evitar este error, use los enlaces o botones de la aplicaci\xF3n para navegar. - # exception_flow exception_flow.unsupportedNavigation=Navegaci\xF3n no permitida - # header navigation header.dashboard=TABLERO DE CONTROL header.login=INICIAR SESI\xD3N @@ -99,7 +95,6 @@ header.search=BUSCAR index_rebuild.heading=Reconstruir \xCDndices index_rebuild.warning=Esto puede tomar largo tiempo y se recomienda que no haya otros usuarios dentro del sistema. - # index_rebuild_success index_rebuild_success.message=Reconstrucci\xF3n de \xCDndices Realizada. item_delete.confirm=Confirmar Eliminaci\xF3n de Elemento @@ -123,7 +118,6 @@ item_form.error.version=Elemento modificado por otro usuario, o usted us\xF3 el bot\xF3n Regresar del navegador. item_form.notifyByEmail=Notificar por e-mail item_form.sendNotifications=enviar notificaciones por e-mail - # item_form item_form.summary=Resumen item_list.assignedTo=Asignado A @@ -136,7 +130,6 @@ item_list.modifySearch=Modificar B\xFAsqueda item_list.recordFound=Registro Encontrado item_list.recordsFound=Registros Encontrados - # item_list (most rendered within a taglib not JSP, some reused also for excel export) item_list.searchingForRelated=Buscando elementos relacionados con item_list.space=Espacio @@ -158,7 +151,6 @@ item_search_form.onOrBefore=En / Antes de item_search_form.priority=Prioridad item_search_form.resultsPerPage=Resultados / P\xE1gina - # item_search_form item_search_form.searchingForRelated=Buscando elementos relacionados con item_search_form.severity=Severidad @@ -177,7 +169,6 @@ item_view.duplicateOf=es un duplicado de item_view.duplicateOfThis=es duplicado de \xE9ste item_view.history=Hist\xF3rico - # item_view (note this is rendered within a taglib and not in a JSP) item_view.id=ID item_view.loggedBy=Registrado Por @@ -200,7 +191,6 @@ item_view_form.duplicateOf=es duplicado de \xE9ste item_view_form.newStatus=Nuevo Estado item_view_form.notifyByEmail=Notificar por e-mail - # item_view_form item_view_form.relateTo=Relacionar este elemento con item_view_form.relatedTo=esta relacionado con \xE9ste @@ -212,16 +202,13 @@ login.password=Contrase\xF1a login.rememberMe=Recu\xE9rdeme login.submit=Entrar - # login login.title=JTrac Inicio de Sesi\xF3n logout.home=Inicio logout.login=Inicio de Sesi\xF3n logout.message=Sesi\xF3n cerrada. Cualquier sesi\xF3n "recu\xE9rdeme" ha sido deshabilitada. - # logout logout.title=Sesi\xF3n cerrada - # mail_sender (this is in the mail sending code, not a JSP) mail_sender.clickHereToAccess=Clic aqu\xED para acceder mail_sender.loginMailGreeting=Hola @@ -239,10 +226,16 @@ options.manageSettings=Administraci\xF3n de Configuraci\xF3n options.manageSpaces=Administraci\xF3n de Espacios options.manageUsers=Administraci\xF3n de Usuarios - # options options.optionsMenu=Men\xFA de Opciones options.rebuildIndexes=Reconstruir \xCDndices +rest_multi_action_controller.anExceptionOcurred.error=Se present\xF3 una excepci\xF3n.\ +rest_multi_action_controller.itemNotFound.error=Elemento (incidencia) no se encontr\xF3:\ +rest_multi_action_controller.newStatusNotPermitted.error=Nuevo estado no est\xE1 permitido desde el estado actual +rest_multi_action_controller.requiredParameterNotFound.error=Par\xE1metro requerido no se encontr\xF3 en la solicitud:\ +rest_multi_action_controller.spaceNotFound.error=Espacio no se encontr\xF3:\ +rest_multi_action_controller.userNotAbleToTransition.error=Usuario no est\xE1 autorizado para realizar la transici\xF3n desde el estado actual hacia el nuevo estado:\ +rest_multi_action_controller.userNotRegistered.error=Usuario no est\xE1 registrado:\ save=Guardar search=Buscar space_allocate.allocate=Asignar @@ -253,16 +246,13 @@ space_allocate.remove=Eliminar space_allocate.role=Rol space_allocate.user=Usuario - # space_allocate space_allocate.usersAllocatedToSpace=Usuarios asignados al Espacio - # space_delete space_delete.confirm=Confirmar el Borrado del Espacio space_delete.line1=\xBFEst\xE1 seguro que desea borrar este Espacio? space_delete.line2=Esta operaci\xF3n eliminar\xE1 todos los elementos de este espacio. space_delete.line3=No puede deshacer operaciones de actualizaci\xE1n en la base de datos para esta operaci\xF3n. - # space_field_delete space_field_delete.confirm=Confirmar el Borrado del Campo. space_field_delete.line1=\xBFEst\xE1 seguro que desea borrar este Campo? @@ -270,7 +260,6 @@ space_field_delete.line3=No puede deshacer operaciones de actualizaci\xF3n en la base de datos para esta operaci\xF3n. space_field_form.addOption=A\xF1adir Opciones space_field_form.done=Hecho - # space_field_form space_field_form.editField=Editar Campo space_field_form.error.optionExists=La Opci\xF3n ya existe @@ -279,20 +268,17 @@ space_field_form.optional=Opcional space_field_form.options=Opciones space_field_form.update=Actualizar - # space_field_option_delete space_field_option_delete.confirm=Cormfirmar el Borrado de la Opci\xF3n space_field_option_delete.line1=\xBFEst\xE1 seguro que desea borrar esta Opci\xF3n? space_field_option_delete.line2=N\xFAmero de registros afectados en la base de datos = {0} space_field_option_delete.line3=No puede deshacer operaciones de actualizaci\xF3n en la base de datos para esta operaci\xF3n. - # space_field_option_edit space_field_option_edit.editOption=Editar la Opci\xF3n por Campo space_field_option_edit.error.exists=La Opci\xF3n ya existe space_field_option_edit.error.optionEmpty=Debe seleccionar una Opci\xF3n space_fields.addField=A\xF1adir un Campo space_fields.chooseType=Escoja el Tipo del Campo Personalizado a a\xF1adir - # space_fields space_fields.customFields=Campos Personalizados por Espacio space_fields.internalName=Nombre Interno @@ -318,7 +304,6 @@ space_form.error.prefixCode.tooLong=La longitud no debe superar los 10 caracteres. space_form.error.prefixCode.tooShort=La logitud debe ser de al menos 3 caracteres. space_form.makePublic=Convertir a P\xFAblico - # space_form space_form.spaceDetails=Detalles del Espacio space_form.spaceKey=Clave del Espacio (Nombre Corto) @@ -327,23 +312,19 @@ space_list.edit=Editar space_list.key=Clave space_list.name=Nombre - # space_list space_list.spaceList=Listado de Espacios space_list.users=Usuarios - # space_role_delete space_role_delete.confirm=Confirmar el Borrado del Rol space_role_delete.line1=Hay ({0}) usuarios asignados a este espacio con este Rol. space_role_delete.line2=\xBFEst\xE1 seguro que desea borrar este Rol? space_role_delete.line3=No puede deshacer operaciones de actualizaci\xF3n en la base de datos para esta operaci\xF3n. - # space_role_form space_role_form.editRoleName=Editar el Nombre del Rol space_role_form.error.role.exists=Ya existe un Rol con ese nombre space_role_form.error.role.invalid=El nombre del Rol debe ser todo en may\xFAsculas o n\xFAmeros space_role_form.error.role.reserved=Este nombre de Rol est\xE1 reservado para uso interno - # space_role_form_confirm space_role_form_confirm.confirm=Confirmar el Renombrado del Rol space_role_form_confirm.line1=\xBFEst\xE1 seguro que desea renombrar este Rol? @@ -357,23 +338,19 @@ space_roles.optional=Opcional space_roles.readonly=S\xF3lo lectura space_roles.role=Rol - # space_roles space_roles.spaceRoles=Roles del Espacio y Transiciones de Estados (WorkFlow) por Espacio space_roles.state=Estado - # space_state_delete space_state_delete.confirm=Confirmar el Borrado del Estado space_state_delete.line1=\xBFEst\xE1 seguro que desea borrar este Estado? space_state_delete.line2=N\xFAmero de registros afectados en la base de datos = (0) space_state_delete.line3=No puede deshacer operaciones de actualizaci\xF3n en la base de datos para esta operaci\xF3n. - # space_state_form space_state_form.editState=Editar Estado space_state_form.error.state.exists=Ya existe un Estado con ese nombre space_state_form.error.state.invalid=El nombre del Estado debe empezar por may\xFAscula, con guiones ('-') para separar las palabras (p.e. "Resuelto", "En-Desarrollo" submit=Aceptar - # override default messages for spring mvc form binding errors typeMismatch.java.lang.Double=Por favor, introduzca un valor num\xE9rico v\xE1lido typeMismatch.java.util.Date=Por favor, introduzca un valor de fecha v\xE1lido. Formato: aaaa-mm-dd @@ -384,11 +361,9 @@ user_allocate_space.remove=Eliminar user_allocate_space.role=Rol user_allocate_space.space=Espacio - # user_allocate_space user_allocate_space.spacesAllocated=Espacios asignados al Usuario user_allocate_space_role.allocate=Asignar - # user_allocate_space_role user_allocate_space_role.allocateRole=Asignar el Rol al Usuario {0} de este espacio user_delete.confirm=Confirmar Eliminaci\xF3n de Usuario @@ -407,7 +382,6 @@ user_form.password=Contrase\xF1a user_form.passwordConfirm.error=Confirmaci\xF3n de Contrase\xF1a Incorrecta user_form.passwordMessage=Una contrase\xF1a ser\xE1 generada y enviada a su e-mail predeterminado.</br>Los campos a continuaci\xF3n son opcionales - # user_form user_form.userDetails=Detalles de Usuario user_list.allocateSpaceRole=Asignar<br>Espacio / Rol @@ -420,7 +394,6 @@ user_list.loginName=Nombre de Inicio de Sesi\xF3n user_list.spaceRole=Espacio (Rol) user_list.userName=Nombre del Usuario - # user_list user_list.usersAndSpaces=Usuarios y Espacios asignados view=Ver This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ptr...@us...> - 2010-09-20 06:29:53
|
Revision: 1360 http://j-trac.svn.sourceforge.net/j-trac/?rev=1360&view=rev Author: ptrthomas Date: 2010-09-20 06:29:47 +0000 (Mon, 20 Sep 2010) Log Message: ----------- added intellij project files to svn ignore list Property Changed: ---------------- trunk/jtrac/ Property changes on: trunk/jtrac ___________________________________________________________________ Modified: svn:ignore - target *.properties home .settings .classpath .project logs catalog.xml lib + target *.properties home .settings .classpath .project logs catalog.xml lib jtrac.iml jtrac.ipr jtrac.iws This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ptr...@us...> - 2010-09-20 06:28:19
|
Revision: 1359 http://j-trac.svn.sourceforge.net/j-trac/?rev=1359&view=rev Author: ptrthomas Date: 2010-09-20 06:28:13 +0000 (Mon, 20 Sep 2010) Log Message: ----------- removed reference to old custom maven ant-integration plugin Modified Paths: -------------- trunk/jtrac/pom.xml Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2010-09-19 07:09:30 UTC (rev 1358) +++ trunk/jtrac/pom.xml 2010-09-20 06:28:13 UTC (rev 1359) @@ -67,16 +67,8 @@ <name>selenium snapshot</name> <url>http://nexus.openqa.org/content/repositories/releases</url> </repository> - </repositories> + </repositories> - <pluginRepositories> - <pluginRepository> - <id>jtrac.info</id> - <name>custom ant integration plugin</name> - <url>http://j-trac.sourceforge.net/repository</url> - </pluginRepository> - </pluginRepositories> - <dependencies> <dependency> <groupId>junit</groupId> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ptr...@us...> - 2010-09-19 07:09:37
|
Revision: 1358 http://j-trac.svn.sourceforge.net/j-trac/?rev=1358&view=rev Author: ptrthomas Date: 2010-09-19 07:09:30 +0000 (Sun, 19 Sep 2010) Log Message: ----------- added console message to show the local maven repo location the ant build is using, and added sample "maven.repo.local" entry for build.properties in the initial comment Modified Paths: -------------- trunk/jtrac/build.xml Modified: trunk/jtrac/build.xml =================================================================== --- trunk/jtrac/build.xml 2010-09-19 06:43:55 UTC (rev 1357) +++ trunk/jtrac/build.xml 2010-09-19 07:09:30 UTC (rev 1358) @@ -5,6 +5,7 @@ tomcat.home=C:/apache-tomcat-5.5.16 [optional, jetty used by default] jmeter.home=C:/jakarta-jmeter-2.2 [optional, for load testing] findbugs.home=C:/peter/opt/findbugs-1.3.1 [optional, for running findbugs] + maven.repo.local=D:/repo --> <property file="build.properties"/> @@ -18,7 +19,8 @@ classpath="etc/maven-ant-tasks.jar"/> <condition property="maven.repo.local" value="${maven.repo.local}" else="${user.home}/.m2/repository"> <isset property="maven.repo.local"/> - </condition> + </condition> + <echo>using maven local repo: ${maven.repo.local}</echo> <artifact:localRepository id="local.repository" path="${maven.repo.local}"/> <artifact:pom file="pom.xml" id="maven.project"/> <artifact:dependencies pathId="compile.classpath" filesetId="compile.fileset" useScope="compile"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ptr...@us...> - 2010-09-19 06:44:01
|
Revision: 1357 http://j-trac.svn.sourceforge.net/j-trac/?rev=1357&view=rev Author: ptrthomas Date: 2010-09-19 06:43:55 +0000 (Sun, 19 Sep 2010) Log Message: ----------- fixed maven repository location for selenium Modified Paths: -------------- trunk/jtrac/pom.xml Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2010-09-17 06:54:34 UTC (rev 1356) +++ trunk/jtrac/pom.xml 2010-09-19 06:43:55 UTC (rev 1357) @@ -64,8 +64,8 @@ <repositories> <repository> <id>openqa.org</id> - <name>selenium snapshot</name> - <url>http://nexus.openqa.org/service/local/repositories/releases/content</url> + <name>selenium snapshot</name> + <url>http://nexus.openqa.org/content/repositories/releases</url> </repository> </repositories> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-09-17 06:54:40
|
Revision: 1356 http://j-trac.svn.sourceforge.net/j-trac/?rev=1356&view=rev Author: manfredwolff Date: 2010-09-17 06:54:34 +0000 (Fri, 17 Sep 2010) Log Message: ----------- Some fixes in ant task "jetty-setup" and makro "war-exploded". Modified Paths: -------------- trunk/jtrac/build.xml Modified: trunk/jtrac/build.xml =================================================================== --- trunk/jtrac/build.xml 2010-09-02 09:42:35 UTC (rev 1355) +++ trunk/jtrac/build.xml 2010-09-17 06:54:34 UTC (rev 1356) @@ -82,17 +82,17 @@ <macrodef name="war-exploded"> <attribute name="deployDir" default="target/${war.name}"/> <sequential> - <copy todir="@{deployDir}"> - <fileset dir="src/main/webapp"/> - </copy> - <copy todir="@{deployDir}/WEB-INF/classes"> - <fileset dir="target/classes"/> - </copy> - <copy todir="@{deployDir}/WEB-INF/lib" flatten="true"> - <fileset dir="${m2.repo}" includes="${runtime.jars}" casesensitive="false"/> - </copy> + <copy todir="@{deployDir}"> + <fileset dir="src/main/webapp"/> + </copy> + <copy todir="@{deployDir}/WEB-INF/classes"> + <fileset dir="target/classes"/> + </copy> + <copy todir="@{deployDir}/WEB-INF/lib" flatten="true"> + <fileset refid="runtime.fileset"/> + </copy> </sequential> - </macrodef> + </macrodef> <!-- ========================= HIBERNATE =========================== --> @@ -443,30 +443,30 @@ </target> <target name="jetty-setup" depends="war-exploded" xmlns:artifact="urn:maven-artifact-ant"> - <artifact:dependencies filesetId="jetty.jars"> - <dependency groupId="org.mortbay.jetty" artifactId="jetty" version="6.1.1"/> - </artifact:dependencies> - <artifact:dependencies filesetId="jetty.start"> - <dependency groupId="org.mortbay.jetty" artifactId="start" version="6.1.1"/> - </artifact:dependencies> + <artifact:dependencies filesetId="jetty-fileset"> + <dependency groupId="org.mortbay.jetty" artifactId="jetty" version="6.1.1"/> + </artifact:dependencies> + <artifact:dependencies filesetId="jetty-start"> + <dependency groupId="org.mortbay.jetty" artifactId="start" version="6.1.1"/> + </artifact:dependencies> <copy todir="target/jetty/lib" flatten="true"> - <fileset dir="${m2.repo}" includes="${jetty.jars}" casesensitive="false"/> + <fileset refid="jetty-fileset"/> </copy> <copy todir="target/jetty" flatten="true"> - <fileset dir="${m2.repo}" includes="${jetty.start}" casesensitive="false"/> + <fileset refid="jetty-start"/> <mapper type="merge" to="start.jar"/> </copy> <copy todir="target/jetty/etc"> <fileset dir="etc"> - <include name="jetty.xml"/> + <include name="jetty.xml"/> <include name="wrapper.conf"/> <include name="webdefault.xml"/> </fileset> - </copy> - <mkdir dir="target/jetty/logs"/> - <mkdir dir="target/jetty/work"/> - <antcall target="jetty-setup-dev"/> - </target> + </copy> + <mkdir dir="target/jetty/logs"/> + <mkdir dir="target/jetty/work"/> + <antcall target="jetty-setup-dev"/> + </target> <target name="jetty-setup-dev" unless="production.mode"> <echo>*** making jetty / webapp changes for development mode...</echo> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-09-02 09:42:42
|
Revision: 1355 http://j-trac.svn.sourceforge.net/j-trac/?rev=1355&view=rev Author: manfredwolff Date: 2010-09-02 09:42:35 +0000 (Thu, 02 Sep 2010) Log Message: ----------- Bugfix: There was sometimes a problem if a person was assignee and in the cc list. Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java Modified: trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java 2010-08-31 06:27:07 UTC (rev 1354) +++ trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java 2010-09-02 09:42:35 UTC (rev 1355) @@ -20,14 +20,20 @@ import info.jtrac.domain.ItemUser; import info.jtrac.domain.User; import info.jtrac.util.ItemUtils; + +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.Enumeration; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties; + import javax.mail.Header; import javax.mail.Session; import javax.mail.internet.MimeMessage; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.MessageSource; @@ -40,281 +46,307 @@ * Class to handle sending of E-mail and pre-formatted messages */ public class MailSender { - - private final Logger logger = LoggerFactory.getLogger(getClass()); - - private JavaMailSenderImpl sender; - private String prefix; - private String from; - private String url; - private MessageSource messageSource; - private Locale defaultLocale; - - public MailSender(Map<String, String> config, MessageSource messageSource, String defaultLocale) { - // initialize email sender - this.messageSource = messageSource; - this.defaultLocale = StringUtils.parseLocaleString(defaultLocale); - String mailSessionJndiName = config.get("mail.session.jndiname"); - if(StringUtils.hasText(mailSessionJndiName)) { - initMailSenderFromJndi(mailSessionJndiName); - } - if(sender == null) { - initMailSenderFromConfig(config); - } - // if sender is still null the send* methods will not - // do anything when called and will just return immediately - String tempUrl = config.get("jtrac.url.base"); - if(tempUrl == null) { - tempUrl = "http://localhost/jtrac/"; - } - if (!tempUrl.endsWith("/")) { - tempUrl = tempUrl + "/"; - } - this.url = tempUrl; - logger.info("email hyperlink base url set to '" + this.url + "'"); - } - /** - * we bend the rules a little and fire off a new thread for sending - * an email message. This has the advantage of not slowing down the item - * create and update screens, i.e. the system returns the next screen - * after "submit" without blocking. This has been used in production - * (and now I guess in many JTrac installations worldwide) - * for quite a while now, on Tomcat without any problems. This helps a lot - * especially when the SMTP server is slow to respond, etc. - */ - private void sendInNewThread(final MimeMessage message) { - new Thread(){ - @Override - public void run() { - logger.debug("send mail thread start"); - try { - try { - sender.send(message); - logger.debug("send mail thread successfull"); - } catch (Exception e) { - logger.error("send mail thread failed", e); - logger.error("mail headers dump start"); - Enumeration headers = message.getAllHeaders(); - while(headers.hasMoreElements()) { - Header h = (Header) headers.nextElement(); - logger.info(h.getName() + ": " + h.getValue()); - } - logger.error("mail headers dump end"); - } - } catch(Exception e) { - throw new RuntimeException(e); - } - } - }.start(); - } - - private String fmt(String key, Locale locale) { - try { - return messageSource.getMessage("mail_sender." + key, null, locale); - } catch (Exception e) { - logger.debug(e.getMessage()); - return "???mail_sender." + key + "???"; - } - } + private final Logger logger = LoggerFactory.getLogger(getClass()); - private String addHeaderAndFooter(StringBuffer html) { - StringBuffer sb = new StringBuffer(); - // additional cosmetic tweaking of e-mail layout - // style just after the body tag does not work for a minority of clients like gmail, thunderbird etc. - // ItemUtils adds the main inline CSS when generating the email content, so we gracefully degrade - sb.append("<html><body><style type='text/css'>table.jtrac th, table.jtrac td { padding-left: 0.2em; padding-right: 0.2em; }</style>"); - sb.append(html); - sb.append("</html>"); - return sb.toString(); - } - - private String getItemViewAnchor(Item item, Locale locale) { - String itemUrl = url + "app/item/" + item.getRefId(); - return "<p style='font-family: Arial; font-size: 75%'><a href='" + itemUrl + "'>" + itemUrl + "</a></p>"; - } - - private String getSubject(Item item) { - String summary = null; - if (item.getSummary() == null) { - summary = ""; - } else if (item.getSummary().length() > 80) { - summary = item.getSummary().substring(0, 80); - } else { - summary = item.getSummary(); - } - return prefix + " #" + item.getRefId() + " " + summary; - } - - public void send(Item item) { - if (sender == null) { - logger.debug("mail sender is null, not sending notifications"); - return; - } - // TODO make this locale sensitive per recipient - logger.debug("attempting to send mail for item update"); - // prepare message content - StringBuffer sb = new StringBuffer(); - String anchor = getItemViewAnchor(item, defaultLocale); - sb.append(anchor); - sb.append(ItemUtils.getAsHtml(item, messageSource, defaultLocale)); - sb.append(anchor); - if (logger.isDebugEnabled()) { - logger.debug("html content: " + sb); - } - // prepare message - MimeMessage message = sender.createMimeMessage(); - MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8"); - - // Remember the TO person email to prevent duplicate mails - String toPersonEmail; - try { - helper.setText(addHeaderAndFooter(sb), true); - helper.setSubject(getSubject(item)); - helper.setSentDate(new Date()); - helper.setFrom(from); - // set TO - if (item.getAssignedTo() != null) { - helper.setTo(item.getAssignedTo().getEmail()); - toPersonEmail = item.getAssignedTo().getEmail(); - } else { - helper.setTo(item.getLoggedBy().getEmail()); - toPersonEmail = item.getLoggedBy().getEmail(); - } - // set CC - if (item.getItemUsers() != null) { - String[] cc = new String[item.getItemUsers().size()]; - int i = 0; - for (ItemUser itemUser : item.getItemUsers()) { - // Send only, if person is not the TO assignee - if (! toPersonEmail.equals(itemUser.getUser().getEmail())) { - cc[i++] = itemUser.getUser().getEmail(); - } - } - helper.setCc(cc); - } - // send message - // workaround: Some PSEUDO user has no email address. Because email address - // is mandatory, you can enter "no" in email address and the mail will not - // be sent. - if (! "no".equals(toPersonEmail)) - sendInNewThread(message); - } catch (Exception e) { - logger.error("failed to prepare e-mail", e); - } - } - - public void sendUserPassword(User user, String clearText) { - if (sender == null) { - logger.debug("mail sender is null, not sending new user / password change notification"); - return; - } - logger.debug("attempting to send mail for user password"); - String localeString = user.getLocale(); - Locale locale = null; - if(localeString == null) { - locale = defaultLocale; - } else { - locale = StringUtils.parseLocaleString(localeString); - } - MimeMessage message = sender.createMimeMessage(); - MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8"); - try { - helper.setTo(user.getEmail()); - helper.setSubject(prefix + " " + fmt("loginMailSubject", locale)); - StringBuffer sb = new StringBuffer(); - sb.append("<p>" + fmt("loginMailGreeting", locale) + " " + user.getName()+ ",</p>"); - sb.append("<p>" + fmt("loginMailLine1", locale) + "</p>"); - sb.append("<table class='jtrac'>"); - sb.append("<tr><th style='background: #CCCCCC'>" + fmt("loginName", locale) - + "</th><td style='border: 1px solid black'>" + user.getLoginName() + "</td></tr>"); - sb.append("<tr><th style='background: #CCCCCC'>" + fmt("password", locale) - + "</th><td style='border: 1px solid black'>" + clearText + "</td></tr>"); - sb.append("</table>"); - sb.append("<p>" + fmt("loginMailLine2", locale) + "</p>"); - sb.append("<p><a href='" + url + "'>" + url + "</a></p>"); - helper.setText(addHeaderAndFooter(sb), true); - helper.setSentDate(new Date()); - // helper.setCc(from); - helper.setFrom(from); - sendInNewThread(message); - } catch (Exception e) { - logger.error("failed to prepare e-mail", e); - } - } - - private void initMailSenderFromJndi(String mailSessionJndiName) { - logger.info("attempting to initialize mail sender from jndi name = '" + mailSessionJndiName + "'"); - JndiObjectFactoryBean factoryBean = new JndiObjectFactoryBean(); - factoryBean.setJndiName(mailSessionJndiName); - // "java:comp/env/" will be prefixed if the JNDI name doesn't already have it - factoryBean.setResourceRef(true); - try { - // this step actually does the JNDI lookup - factoryBean.afterPropertiesSet(); - } catch(Exception e) { - logger.warn("failed to locate mail session : " + e); - return; - } - Session session = (Session) factoryBean.getObject(); - sender = new JavaMailSenderImpl(); - sender.setSession(session); - logger.info("email sender initialized from jndi name = '" + mailSessionJndiName + "'"); - } - - private void initMailSenderFromConfig(Map<String, String> config) { - String host = config.get("mail.server.host"); - if (host == null) { - logger.warn("'mail.server.host' config is null, mail sender not initialized"); - return; - } - String port = config.get("mail.server.port"); - String localhost = config.get("mail.smtp.localhost"); - from = config.get("mail.from"); - prefix = config.get("mail.subject.prefix"); - String userName = config.get("mail.server.username"); - String password = config.get("mail.server.password"); - String startTls = config.get("mail.server.starttls.enable"); - logger.info("initializing email adapter: host = '" + host + "', port = '" - + port + "', from = '" + from + "', prefix = '" + prefix + "'"); - this.prefix = prefix == null ? "[jtrac]" : prefix; - this.from = from == null ? "jtrac" : from; - int p = 25; - if (port != null) { - try { - p = Integer.parseInt(port); - } catch (NumberFormatException e) { - logger.warn("mail.server.port not an integer : '" + port + "', defaulting to 25"); - } - } - sender = new JavaMailSenderImpl(); - sender.setHost(host); - sender.setPort(p); - Properties props = null; + private JavaMailSenderImpl sender; + private String prefix; + private String from; + private String url; + private MessageSource messageSource; + private Locale defaultLocale; - if (userName != null) { - // authentication requested - props = new Properties(); - props.put("mail.smtp.auth", "true"); - if (startTls != null && startTls.toLowerCase().equals("true")) { - props.put("mail.smtp.starttls.enable", "true"); - } - sender.setUsername(userName); - sender.setPassword(password); - } - - if (localhost != null) { - if (props == null) { - props = new Properties(); - } - props.put("mail.smtp.localhost", localhost); - } - - if (props != null) { - sender.setJavaMailProperties(props); - } - - logger.info("email sender initialized from config: host = '" + host + "', port = '" + p + "'"); - } - + public MailSender(Map<String, String> config, MessageSource messageSource, + String defaultLocale) { + // initialize email sender + this.messageSource = messageSource; + this.defaultLocale = StringUtils.parseLocaleString(defaultLocale); + String mailSessionJndiName = config.get("mail.session.jndiname"); + if (StringUtils.hasText(mailSessionJndiName)) { + initMailSenderFromJndi(mailSessionJndiName); + } + if (sender == null) { + initMailSenderFromConfig(config); + } + // if sender is still null the send* methods will not + // do anything when called and will just return immediately + String tempUrl = config.get("jtrac.url.base"); + if (tempUrl == null) { + tempUrl = "http://localhost/jtrac/"; + } + if (!tempUrl.endsWith("/")) { + tempUrl = tempUrl + "/"; + } + this.url = tempUrl; + logger.info("email hyperlink base url set to '" + this.url + "'"); + } + + /** + * we bend the rules a little and fire off a new thread for sending + * an email message. This has the advantage of not slowing down the item + * create and update screens, i.e. the system returns the next screen + * after "submit" without blocking. This has been used in production + * (and now I guess in many JTrac installations worldwide) + * for quite a while now, on Tomcat without any problems. This helps a lot + * especially when the SMTP server is slow to respond, etc. + */ + private void sendInNewThread(final MimeMessage message) { + new Thread() { + @Override + public void run() { + logger.debug("send mail thread start"); + try { + try { + sender.send(message); + logger.debug("send mail thread successfull"); + } catch (Exception e) { + logger.error("send mail thread failed", e); + logger.error("mail headers dump start"); + Enumeration headers = message.getAllHeaders(); + while (headers.hasMoreElements()) { + Header h = (Header) headers.nextElement(); + logger.info(h.getName() + ": " + h.getValue()); + } + logger.error("mail headers dump end"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + }.start(); + } + + private String fmt(String key, Locale locale) { + try { + return messageSource.getMessage("mail_sender." + key, null, locale); + } catch (Exception e) { + logger.debug(e.getMessage()); + return "???mail_sender." + key + "???"; + } + } + + private String addHeaderAndFooter(StringBuffer html) { + StringBuffer sb = new StringBuffer(); + // additional cosmetic tweaking of e-mail layout + // style just after the body tag does not work for a minority of clients + // like gmail, thunderbird etc. + // ItemUtils adds the main inline CSS when generating the email content, + // so we gracefully degrade + sb + .append("<html><body><style type='text/css'>table.jtrac th, table.jtrac td { padding-left: 0.2em; padding-right: 0.2em; }</style>"); + sb.append(html); + sb.append("</html>"); + return sb.toString(); + } + + private String getItemViewAnchor(Item item, Locale locale) { + String itemUrl = url + "app/item/" + item.getRefId(); + return "<p style='font-family: Arial; font-size: 75%'><a href='" + + itemUrl + "'>" + itemUrl + "</a></p>"; + } + + private String getSubject(Item item) { + String summary = null; + if (item.getSummary() == null) { + summary = ""; + } else if (item.getSummary().length() > 80) { + summary = item.getSummary().substring(0, 80); + } else { + summary = item.getSummary(); + } + return prefix + " #" + item.getRefId() + " " + summary; + } + + public void send(Item item) { + if (sender == null) { + logger.debug("mail sender is null, not sending notifications"); + return; + } + // TODO make this locale sensitive per recipient + logger.debug("attempting to send mail for item update"); + // prepare message content + StringBuffer sb = new StringBuffer(); + String anchor = getItemViewAnchor(item, defaultLocale); + sb.append(anchor); + sb.append(ItemUtils.getAsHtml(item, messageSource, defaultLocale)); + sb.append(anchor); + if (logger.isDebugEnabled()) { + logger.debug("html content: " + sb); + } + // prepare message + MimeMessage message = sender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8"); + + // Remember the TO person email to prevent duplicate mails + String toPersonEmail; + try { + helper.setText(addHeaderAndFooter(sb), true); + helper.setSubject(getSubject(item)); + helper.setSentDate(new Date()); + helper.setFrom(from); + // set TO + if (item.getAssignedTo() != null) { + helper.setTo(item.getAssignedTo().getEmail()); + toPersonEmail = item.getAssignedTo().getEmail(); + } else { + helper.setTo(item.getLoggedBy().getEmail()); + toPersonEmail = item.getLoggedBy().getEmail(); + } + // set CC + List<String> cclist = new ArrayList<String>(); + if (item.getItemUsers() != null) { + for (ItemUser itemUser : item.getItemUsers()) { + // Send only, if person is not the TO assignee + if (!toPersonEmail.equals(itemUser.getUser().getEmail())) { + cclist.add(itemUser.getUser().getEmail()); + } + } + + // sounds complicated but we have to ensure that no null + // item will be set in setCC(). So we collect the cc items + // in the cclist and transform it to an stringarray. + if (cclist.size() > 0) { + String[] cc = cclist.toArray(new String[0]); + helper.setCc(cc); + } + } + // send message + // workaround: Some PSEUDO user has no email address. Because email + // address + // is mandatory, you can enter "no" in email address and the mail + // will not + // be sent. + if (!"no".equals(toPersonEmail)) + sendInNewThread(message); + } catch (Exception e) { + logger.error("failed to prepare e-mail", e); + } + } + + public void sendUserPassword(User user, String clearText) { + if (sender == null) { + logger + .debug("mail sender is null, not sending new user / password change notification"); + return; + } + logger.debug("attempting to send mail for user password"); + String localeString = user.getLocale(); + Locale locale = null; + if (localeString == null) { + locale = defaultLocale; + } else { + locale = StringUtils.parseLocaleString(localeString); + } + MimeMessage message = sender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8"); + try { + helper.setTo(user.getEmail()); + helper.setSubject(prefix + " " + fmt("loginMailSubject", locale)); + StringBuffer sb = new StringBuffer(); + sb.append("<p>" + fmt("loginMailGreeting", locale) + " " + + user.getName() + ",</p>"); + sb.append("<p>" + fmt("loginMailLine1", locale) + "</p>"); + sb.append("<table class='jtrac'>"); + sb.append("<tr><th style='background: #CCCCCC'>" + + fmt("loginName", locale) + + "</th><td style='border: 1px solid black'>" + + user.getLoginName() + "</td></tr>"); + sb.append("<tr><th style='background: #CCCCCC'>" + + fmt("password", locale) + + "</th><td style='border: 1px solid black'>" + clearText + + "</td></tr>"); + sb.append("</table>"); + sb.append("<p>" + fmt("loginMailLine2", locale) + "</p>"); + sb.append("<p><a href='" + url + "'>" + url + "</a></p>"); + helper.setText(addHeaderAndFooter(sb), true); + helper.setSentDate(new Date()); + // helper.setCc(from); + helper.setFrom(from); + sendInNewThread(message); + } catch (Exception e) { + logger.error("failed to prepare e-mail", e); + } + } + + private void initMailSenderFromJndi(String mailSessionJndiName) { + logger.info("attempting to initialize mail sender from jndi name = '" + + mailSessionJndiName + "'"); + JndiObjectFactoryBean factoryBean = new JndiObjectFactoryBean(); + factoryBean.setJndiName(mailSessionJndiName); + // "java:comp/env/" will be prefixed if the JNDI name doesn't already + // have it + factoryBean.setResourceRef(true); + try { + // this step actually does the JNDI lookup + factoryBean.afterPropertiesSet(); + } catch (Exception e) { + logger.warn("failed to locate mail session : " + e); + return; + } + Session session = (Session) factoryBean.getObject(); + sender = new JavaMailSenderImpl(); + sender.setSession(session); + logger.info("email sender initialized from jndi name = '" + + mailSessionJndiName + "'"); + } + + private void initMailSenderFromConfig(Map<String, String> config) { + String host = config.get("mail.server.host"); + if (host == null) { + logger + .warn("'mail.server.host' config is null, mail sender not initialized"); + return; + } + String port = config.get("mail.server.port"); + String localhost = config.get("mail.smtp.localhost"); + from = config.get("mail.from"); + prefix = config.get("mail.subject.prefix"); + String userName = config.get("mail.server.username"); + String password = config.get("mail.server.password"); + String startTls = config.get("mail.server.starttls.enable"); + logger.info("initializing email adapter: host = '" + host + + "', port = '" + port + "', from = '" + from + "', prefix = '" + + prefix + "'"); + this.prefix = prefix == null ? "[jtrac]" : prefix; + this.from = from == null ? "jtrac" : from; + int p = 25; + if (port != null) { + try { + p = Integer.parseInt(port); + } catch (NumberFormatException e) { + logger.warn("mail.server.port not an integer : '" + port + + "', defaulting to 25"); + } + } + sender = new JavaMailSenderImpl(); + sender.setHost(host); + sender.setPort(p); + Properties props = null; + + if (userName != null) { + // authentication requested + props = new Properties(); + props.put("mail.smtp.auth", "true"); + if (startTls != null && startTls.toLowerCase().equals("true")) { + props.put("mail.smtp.starttls.enable", "true"); + } + sender.setUsername(userName); + sender.setPassword(password); + } + + if (localhost != null) { + if (props == null) { + props = new Properties(); + } + props.put("mail.smtp.localhost", localhost); + } + + if (props != null) { + sender.setJavaMailProperties(props); + } + + logger.info("email sender initialized from config: host = '" + host + + "', port = '" + p + "'"); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-08-31 06:27:13
|
Revision: 1354 http://j-trac.svn.sourceforge.net/j-trac/?rev=1354&view=rev Author: manfredwolff Date: 2010-08-31 06:27:07 +0000 (Tue, 31 Aug 2010) Log Message: ----------- #3054238: A user may submit a post (a new issue or update to an existing issue) and that post may be recorded as being posted by a different use. Updated to Wicket 1.3.7 with impact in the signature in ReloadingWicketFilter.java. The tests has not shown any impact. Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/java/info/jtrac/wicket/devmode/ReloadingWicketFilter.java Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2010-08-31 06:22:26 UTC (rev 1353) +++ trunk/jtrac/pom.xml 2010-08-31 06:27:07 UTC (rev 1354) @@ -330,12 +330,12 @@ <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket</artifactId> - <version>1.3.1</version> + <version>1.3.7</version> </dependency> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-extensions</artifactId> - <version>1.3.1</version> + <version>1.3.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/devmode/ReloadingWicketFilter.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/devmode/ReloadingWicketFilter.java 2010-08-31 06:22:26 UTC (rev 1353) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/devmode/ReloadingWicketFilter.java 2010-08-31 06:27:07 UTC (rev 1354) @@ -56,7 +56,7 @@ } @Override - public void doGet(HttpServletRequest request, HttpServletResponse response) + public boolean doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (reloadingClassLoader.hasChanges()) { logger.debug("changes to reloadable classes detected, reloading..."); @@ -64,7 +64,7 @@ // request.getSession().invalidate(); super.init(filterConfig); } - super.doGet(request, response); + return super.doGet(request, response); } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-08-31 06:22:32
|
Revision: 1353 http://j-trac.svn.sourceforge.net/j-trac/?rev=1353&view=rev Author: manfredwolff Date: 2010-08-31 06:22:26 +0000 (Tue, 31 Aug 2010) Log Message: ----------- #3054452 Patch from Juan Carlos: In Jtrac 2.2.0-dev5 the mail always is sent on English language, I attach the file that is necessary to modified to be able to receive the mail in the default language configured. Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/JtracImpl.java Modified: trunk/jtrac/src/main/java/info/jtrac/JtracImpl.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/JtracImpl.java 2010-08-30 13:05:24 UTC (rev 1352) +++ trunk/jtrac/src/main/java/info/jtrac/JtracImpl.java 2010-08-31 06:22:26 UTC (rev 1353) @@ -176,8 +176,8 @@ */ public void init() { Map<String, String> config = loadAllConfig(); - initMailSender(config); initDefaultLocale(config.get("locale.default")); + initMailSender(config); initAttachmentMaxSize(config.get("attachment.maxsize")); initSessionTimeout(config.get("session.timeout")); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-08-30 13:05:30
|
Revision: 1352 http://j-trac.svn.sourceforge.net/j-trac/?rev=1352&view=rev Author: manfredwolff Date: 2010-08-30 13:05:24 +0000 (Mon, 30 Aug 2010) Log Message: ----------- Recreate Patch. Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch 2010-07-08 09:43:49 UTC (rev 1351) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch 2010-08-30 13:05:24 UTC (rev 1352) @@ -1,16 +1,32 @@ Index: ItemListPanel.java =================================================================== ---- ItemListPanel.java (revision 1350) +--- ItemListPanel.java (revision 1351) +++ ItemListPanel.java (working copy) -@@ -18,6 +18,7 @@ +@@ -18,20 +18,20 @@ import info.jtrac.domain.AbstractItem; import info.jtrac.domain.ColumnHeading; +-import info.jtrac.domain.ColumnHeading.Name; + import info.jtrac.domain.History; +import info.jtrac.domain.Item; - import info.jtrac.domain.ColumnHeading.Name; - import info.jtrac.domain.History; import info.jtrac.domain.ItemSearch; -@@ -52,6 +53,7 @@ ++import info.jtrac.domain.ColumnHeading.Name; + import info.jtrac.util.DateUtils; + import info.jtrac.util.ExcelUtils; +- + import info.jtrac.util.ItemUtils; +-import static info.jtrac.domain.ColumnHeading.Name.*; + + import java.io.IOException; + import java.io.OutputStreamWriter; + import java.util.ArrayList; + import java.util.List; + import java.util.Map; ++ + import org.apache.wicket.IRequestTarget; + import org.apache.wicket.PageParameters; + import org.apache.wicket.RequestCycle; +@@ -52,6 +52,7 @@ /** * item list panel */ @@ -18,7 +34,7 @@ public class ItemListPanel extends BasePanel { private ItemSearch itemSearch; -@@ -318,7 +320,13 @@ +@@ -318,7 +319,13 @@ value = new PropertyModel(item, "assignedTo.name"); break; case TIME_STAMP: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-07-08 09:43:55
|
Revision: 1351 http://j-trac.svn.sourceforge.net/j-trac/?rev=1351&view=rev Author: manfredwolff Date: 2010-07-08 09:43:49 +0000 (Thu, 08 Jul 2010) Log Message: ----------- Bugfix of the patch. Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch 2010-06-15 10:57:14 UTC (rev 1350) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch 2010-07-08 09:43:49 UTC (rev 1351) @@ -1,6 +1,6 @@ Index: ItemListPanel.java =================================================================== ---- ItemListPanel.java (revision 1349) +--- ItemListPanel.java (revision 1350) +++ ItemListPanel.java (working copy) @@ -18,6 +18,7 @@ @@ -10,13 +10,25 @@ import info.jtrac.domain.ColumnHeading.Name; import info.jtrac.domain.History; import info.jtrac.domain.ItemSearch; -@@ -318,7 +319,8 @@ +@@ -52,6 +53,7 @@ + /** + * item list panel + */ ++@SuppressWarnings("serial") + public class ItemListPanel extends BasePanel { + + private ItemSearch itemSearch; +@@ -318,7 +320,13 @@ value = new PropertyModel(item, "assignedTo.name"); break; case TIME_STAMP: -- value = new Model(DateUtils.formatTimeStamp(item.getTimeStamp())); -+ //value = new Model(DateUtils.formatTimeStamp(item.getTimeStamp())); -+ value = new Model(DateUtils.formatTimeStamp(((Item)item).getLatestHistory().getTimeStamp())); ++ if (item instanceof History) { + value = new Model(DateUtils.formatTimeStamp(item.getTimeStamp())); ++ } else { ++ if (item instanceof Item) { ++ value = new Model(DateUtils.formatTimeStamp( ((Item)item).getLatestHistory().getTimeStamp())); ++ } ++ } break; case SPACE: if(showHistory) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-06-15 10:57:20
|
Revision: 1350 http://j-trac.svn.sourceforge.net/j-trac/?rev=1350&view=rev Author: manfredwolff Date: 2010-06-15 10:57:14 +0000 (Tue, 15 Jun 2010) Log Message: ----------- Feature Request #1950255: This patch shows the last change of the item in the itemlist. It is not possible to search on this item. Added Paths: ----------- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch Added: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch (rev 0) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemListPanel.java.patch 2010-06-15 10:57:14 UTC (rev 1350) @@ -0,0 +1,22 @@ +Index: ItemListPanel.java +=================================================================== +--- ItemListPanel.java (revision 1349) ++++ ItemListPanel.java (working copy) +@@ -18,6 +18,7 @@ + + import info.jtrac.domain.AbstractItem; + import info.jtrac.domain.ColumnHeading; ++import info.jtrac.domain.Item; + import info.jtrac.domain.ColumnHeading.Name; + import info.jtrac.domain.History; + import info.jtrac.domain.ItemSearch; +@@ -318,7 +319,8 @@ + value = new PropertyModel(item, "assignedTo.name"); + break; + case TIME_STAMP: +- value = new Model(DateUtils.formatTimeStamp(item.getTimeStamp())); ++ //value = new Model(DateUtils.formatTimeStamp(item.getTimeStamp())); ++ value = new Model(DateUtils.formatTimeStamp(((Item)item).getLatestHistory().getTimeStamp())); + break; + case SPACE: + if(showHistory) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-05-11 14:07:01
|
Revision: 1349 http://j-trac.svn.sourceforge.net/j-trac/?rev=1349&view=rev Author: manfredwolff Date: 2010-05-11 14:06:52 +0000 (Tue, 11 May 2010) Log Message: ----------- Fixing #2974643 (new option for mail.smtp.localhost) including the message files (default, English, German). Also updating the documentation with some releasenotes for 2.2.0 and the new setting screen. Modified Paths: -------------- trunk/jtrac/doc/src/images/settings.png trunk/jtrac/doc/src/index.xml trunk/jtrac/src/main/java/info/jtrac/domain/Config.java trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java trunk/jtrac/src/main/resources/messages.properties trunk/jtrac/src/main/resources/messages_de.properties trunk/jtrac/src/main/resources/messages_en.properties Modified: trunk/jtrac/doc/src/images/settings.png =================================================================== (Binary files differ) Modified: trunk/jtrac/doc/src/index.xml =================================================================== --- trunk/jtrac/doc/src/index.xml 2010-05-11 11:51:04 UTC (rev 1348) +++ trunk/jtrac/doc/src/index.xml 2010-05-11 14:06:52 UTC (rev 1349) @@ -11,12 +11,16 @@ <bookinfo> <title>JTrac</title> <subtitle>User / Developer Guide</subtitle> - <releaseinfo>2.1.0</releaseinfo> + <releaseinfo>2.2.0</releaseinfo> <authorgroup> <author> <firstname>Peter</firstname> <surname>Thomas</surname> </author> + <author> + <firstname>Manfred</firstname> + <surname>Wolff</surname> + </author> </authorgroup> </bookinfo> @@ -84,6 +88,30 @@ upgrade. </para> </sect1> + + <sect1 id="introduction-releasenotes-2_2"> + <title>Release Notes: Version 2.2.0</title> + <para> + There are no database changes between version 2.1.0 and 2.2.0. Instructions on how to upgrade are + available in the "<link linkend="upgrading">upgrading</link>" section of this document. + </para> + <para> + There where some minor changes and bugfixes: + <itemizedlist> + <listitem> + <para>It is possible to configure an individual header and an individual logo for your own JTrac.</para> + </listitem> + <listitem> + <para>Errors that were occured because of missing language ressources are fixed.</para> + </listitem> + <listitem> + <para>Some email-issues e.g. sending duplicate mails are fixed.</para> + </listitem> + </itemizedlist> + For details see the <ulink url="https://sourceforge.net/projects/j-trac/">different tracker at + the sourceforge website.</ulink> + </para> + </sect1> </chapter> <chapter id="features"> @@ -757,7 +785,16 @@ <para> JTrac also can lookup and use a JNDI mail session (javax.mail.Session) if required. If you provide a JNDI name, JTrac will ignore the SMTP server details provided. - </para> + </para> + + <para> + JTrac provides also other settings for an individual Headline (jtrac.header.text) and an + individual logo on the right side (jtrac.header.text). If no logo is set the original + JTrac logo is shown. If the jtrac.edit.item configuration item is set to true people may + edit their own items while no change is happens (editable item up to the first history entry). + Admins are always able to change the original item text. + </para> + </sect1> <sect1 id="installation-war"> <title>Using only the WAR file</title> Modified: trunk/jtrac/src/main/java/info/jtrac/domain/Config.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2010-05-11 11:51:04 UTC (rev 1348) +++ trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2010-05-11 14:06:52 UTC (rev 1349) @@ -42,6 +42,7 @@ PARAMS.add("mail.server.starttls.enable"); PARAMS.add("mail.subject.prefix"); PARAMS.add("mail.from"); + PARAMS.add("mail.smtp.localhost"); PARAMS.add("mail.session.jndiname"); PARAMS.add("jtrac.url.base"); PARAMS.add("jtrac.header.picture"); Modified: trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java 2010-05-11 11:51:04 UTC (rev 1348) +++ trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java 2010-05-11 14:06:52 UTC (rev 1349) @@ -268,7 +268,8 @@ logger.warn("'mail.server.host' config is null, mail sender not initialized"); return; } - String port = config.get("mail.server.port"); + String port = config.get("mail.server.port"); + String localhost = config.get("mail.smtp.localhost"); from = config.get("mail.from"); prefix = config.get("mail.subject.prefix"); String userName = config.get("mail.server.username"); @@ -289,17 +290,30 @@ sender = new JavaMailSenderImpl(); sender.setHost(host); sender.setPort(p); + Properties props = null; + if (userName != null) { // authentication requested - Properties props = new Properties(); + props = new Properties(); props.put("mail.smtp.auth", "true"); if (startTls != null && startTls.toLowerCase().equals("true")) { props.put("mail.smtp.starttls.enable", "true"); } - sender.setJavaMailProperties(props); sender.setUsername(userName); sender.setPassword(password); } + + if (localhost != null) { + if (props == null) { + props = new Properties(); + } + props.put("mail.smtp.localhost", localhost); + } + + if (props != null) { + sender.setJavaMailProperties(props); + } + logger.info("email sender initialized from config: host = '" + host + "', port = '" + p + "'"); } Modified: trunk/jtrac/src/main/resources/messages.properties =================================================================== --- trunk/jtrac/src/main/resources/messages.properties 2010-05-11 11:51:04 UTC (rev 1348) +++ trunk/jtrac/src/main/resources/messages.properties 2010-05-11 14:06:52 UTC (rev 1349) @@ -185,6 +185,7 @@ config.mail.subject.prefix = Text that will be prefixed to the e-mail subject-line (default [jtrac]) config.mail.session.jndiname = javax.mail.Session JNDI name - if present, this will be used instead of the SMTP server details above config.mail.from = When generating e-mail, this will be used as the 'from' address +config.mail.smtp.localhost = Override for the HELO setting of very strict SMPT relays config.jtrac.url.base = Base URL of your JTrac installation ( e.g. http://myserver/jtrac ) required for links in the e-mails to work config.jtrac.header.picture = Individual header picture config.jtrac.header.text = Individual header text Modified: trunk/jtrac/src/main/resources/messages_de.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_de.properties 2010-05-11 11:51:04 UTC (rev 1348) +++ trunk/jtrac/src/main/resources/messages_de.properties 2010-05-11 14:06:52 UTC (rev 1349) @@ -184,6 +184,7 @@ config.mail.subject.prefix = Text der dem eMail Betreff vorangestellt wird (Default [jtrac]) config.mail.session.jndiname = javax.mail.Session JNDI Name - Wenn vorhanden wird diese Verbindung statt dem SMTP Server benutzt config.mail.from = Wir in eMails als Absenderadresse gesetzt +config.mail.smtp.localhost = \xDCberladen der HELO Settings f\xFCr sehr strikte SMPT Server config.jtrac.url.base = URL dieser Installation ( zB. http://myserver/jtrac ) wird ben\u00F6tigt f\u00FCr Links in den eMails config.jtrac.header.picture = Inidividuelles Bild config.jtrac.header.text = Individueller Text Modified: trunk/jtrac/src/main/resources/messages_en.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_en.properties 2010-05-11 11:51:04 UTC (rev 1348) +++ trunk/jtrac/src/main/resources/messages_en.properties 2010-05-11 14:06:52 UTC (rev 1349) @@ -185,6 +185,7 @@ config.mail.subject.prefix = Text that will be prefixed to the e-mail subject-line (default [jtrac]) config.mail.session.jndiname = javax.mail.Session JNDI name - if present, this will be used instead of the SMTP server details above config.mail.from = When generating e-mail, this will be used as the 'from' address +config.mail.smtp.localhost = Override for the HELO setting of very strict SMPT relays config.jtrac.url.base = Base URL of your JTrac installation ( e.g. http://myserver/jtrac ) required for links in the e-mails to work config.jtrac.header.picture = Individual header picture config.jtrac.header.text = Individual header text This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-05-11 11:51:12
|
Revision: 1348 http://j-trac.svn.sourceforge.net/j-trac/?rev=1348&view=rev Author: manfredwolff Date: 2010-05-11 11:51:04 +0000 (Tue, 11 May 2010) Log Message: ----------- If "jtrac.edit.item" is set to true (Options | Manage Settings) it is for a normal user only possible to change the main entry if there is no history entry. Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.java Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.java 2010-05-05 05:50:48 UTC (rev 1347) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.java 2010-05-11 11:51:04 UTC (rev 1348) @@ -16,15 +16,21 @@ package info.jtrac.wicket; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.Set; +import info.jtrac.domain.History; import info.jtrac.domain.Item; +import info.jtrac.domain.ItemItem; import info.jtrac.domain.ItemSearch; import info.jtrac.domain.User; import org.apache.wicket.PageParameters; import org.apache.wicket.RestartResponseAtInterceptPageException; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.markup.html.list.ListView; /** * dashboard page @@ -81,6 +87,15 @@ throw new RestartResponseAtInterceptPageException(ErrorPage.class); } + // Edit: Only if there is no history (related item) of the Item + boolean nohistory = true; + if (item.getHistory() != null) { + List<History> history = new ArrayList<History>(item.getHistory()); + if (history.size() > 1) { + nohistory = false; + } + } + // Edit: Also the owner of the item should change it. final Map<String, String> configMap = getJtrac().loadAllConfig(); String shouldEdit = configMap.get("jtrac.edit.item"); @@ -89,7 +104,8 @@ setResponsePage(new ItemFormPage(item.getId())); } }.setVisible((item.getLoggedBy().getLoginName().equals(user.getLoginName()) && - ("true".equals(shouldEdit))) || + ("true".equals(shouldEdit)) && + (nohistory)) || user.isSuperUser() || user.isAdminForSpace(item.getSpace().getId()))); add(new ItemViewPanel("itemViewPanel", item, isRelate || user.getId() == 0)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-05-05 05:50:55
|
Revision: 1347 http://j-trac.svn.sourceforge.net/j-trac/?rev=1347&view=rev Author: manfredwolff Date: 2010-05-05 05:50:48 +0000 (Wed, 05 May 2010) Log Message: ----------- Added Norwegian translation file. Added Paths: ----------- trunk/jtrac/src/main/resources/messages_no.properties Added: trunk/jtrac/src/main/resources/messages_no.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_no.properties (rev 0) +++ trunk/jtrac/src/main/resources/messages_no.properties 2010-05-05 05:50:48 UTC (rev 1347) @@ -0,0 +1,442 @@ +# please refer documentation before starting work on a translation: +# http://jtrac.info/doc/html/dev-guide.html#dev-translating + +# globals +submit = Lagre +cancel = Avbryt +delete = Slett +back = Tilbake +next = Neste +edit = Rediger +view = Visning +search = S\xBFk +new = Ny +save = Lagre + +# override default messages for spring mvc form binding errors +typeMismatch.java.lang.Double = Bruk et gyldig desimaltall +typeMismatch.java.util.Date = Legg inn en gyldig dato i formatet\: yyyy-mm-dd + +# wicket globals +null = +nullValid = +Required = Fyll inn n\xBFdvendige felt +IConverter.Double = ${label}\: Legg inn et gyldig tall +IConverter.Date = ${label}\: Legg inn en gyldig dato i formatet\: yyyy-mm-dd + +# generic form validation message +error.empty = M\x8C fylles ut + +# header navigation +header.dashboard = Oversikt +header.new = Ny +header.search = S\xBFk +header.options = Alternativer +header.login = Logg inn +header.logout = Logg ut + +# dashboard +dashboard.noSpaces = Du er ikke koblet til noen omr\x8Cder +dashboard.space = Omr\x8Cde +dashboard.action = Handling +dashboard.status = Status +dashboard.loggedByMe = Lagt inn<br/>av meg +dashboard.assignedToMe = Tildelt<br/>meg +dashboard.all = Alle +dashboard.new = Ny +dashboard.search = S\xBFk +dashboard.showDetails = Vis detaljer +dashboard.hideDetails = Skjul detaljer + +# item_form +item_form.summary = Overskrift +item_form.detail = Beskrivelse +item_form.assignTo = Tildelt +item_form.editReason = Rediger \x8Crsak +item_form.sendNotifications = send epost meldinger +item_form.notifyByEmail = Varsle med epost +item_form.attachment = Vedlegg +item_form.error.version = Registreringen er endret av en annen bruker eller du har klikket nettleserens tilbake-knapp + +# item_view (note this is rendered within a taglib and not in a JSP) +item_view.id = ID +item_view.relatedItems = Relaterte emner +item_view.remove = Fjern +item_view.relatedTo = er relatert til +item_view.duplicateOf = er duplikat av +item_view.dependsOn = avhengig av +item_view.relatedToThis = er relatert til denne +item_view.duplicateOfThis = er duplikat av denne +item_view.dependsOnThis = avhenger av denne +item_view.this = denne +item_view.status = Status +item_view.loggedBy = Registrert av +item_view.assignedTo = Tildelt +item_view.summary = Overskrift +item_view.detail = Beskrivelse +item_view.history = Historie +item_view.comment = Kommentar +item_view.timeStamp = Tid + +# item_view_form +item_view_form.relateTo = Relater denne registreringen til +item_view_form.duplicateOf = er duplikat av denne +item_view_form.dependsOn = avhenger av denne +item_view_form.relatedTo = er relatert til denne +item_view_form.newStatus = Ny Status +item_view_form.assignTo = Fordel +item_view_form.comment = Kommentar +item_view_form.sendNotifications = send epost meldinger +item_view_form.addRelatedItem = legg til relatert post +item_view_form.change = endre +item_view_form.notifyByEmail = Varsle med epost +item_view_form.attachment = Vedlegg +item_view_form.assignedTo.error = Tildeles: P\x8Ckrevd hvis status annet enn {0} +item_view_form.status.error = P\x8Ckrevd ved fordeling +item_view_form.chooseStatus = -- velg status -- + +# item_search_form +item_search_form.searchingForRelated = S\xBFk etter emner relatert til +item_search_form.viewItemById = Se emner etter id +item_search_form.textSearch = Teksts\xBFk +item_search_form.resultsPerPage = Resultater / Side +item_search_form.noLimit = Ingen begrensning +item_search_form.sortOnColumn = Sorter p\x8C en kolonne +item_search_form.id = ID +item_search_form.descending = Fallende +item_search_form.showDetail = Vis detalj +item_search_form.showHistory = Vis historie +item_search_form.loggedBy = Registrert av +item_search_form.assignedTo = Tildelt +item_search_form.createdDate = Opprettet dato +item_search_form.onOrAfter = P\x8C / Etter +item_search_form.onOrBefore = P\x8C / F\xBFr +item_search_form.status = Status +item_search_form.severity = Alvorlighet +item_search_form.priority = Prioritering +item_search_form.historyUpdatedDate = Historie oppdatert dato +item_search_form.space = Omr\x8Cde +item_search_form.error.refId.invalid = Ugyldig id +item_search_form.error.refId.notFound = Post ble ikke funnet +item_search_form.error.summary.invalid = Ugyldig s\xBFkestreng + +# item_list (most rendered within a taglib not JSP, some reused also for excel export) +item_list.searchingForRelated = S\xBFker etter emner relatert til +item_list.modifySearch = Endre s\xBFk +item_list.recordFound = post funnet +item_list.recordsFound = poster funnet +item_list.exportToExcel = Excel +item_list.exportToXml = XML +item_list.id = ID +item_list.summary = Overskrift +item_list.detail = Beskrivelse +item_list.loggedBy = Registrert av +item_list.status = Status +item_list.assignedTo = Tildelt +item_list.timeStamp = Tid +item_list.history = Historie +item_list.space = Omr\x8Cde + +# options +options.optionsMenu = Alternativer meny +options.editYourProfile = Rediger brukerprofil +options.manageUsers = Administrer brukere +options.manageSpaces = Administrer omr\x8Cder +options.manageSettings = Administrer innstillinger +options.rebuildIndexes = Bygg indekser p\x8C nytt +options.importFromExcel = Importer fra Excel + +# user_form +user_form.userDetails = Brukerdetaljer +user_form.loginId = Logginn id +user_form.fullName = Fullt navn +user_form.emailId = E-post id +user_form.language = Spr\x8Ck +user_form.passwordMessage = Et passord vil bli generert og sendt pr epost automatisk.<br/>Feltene under er valgfrie +user_form.password = Passord +user_form.confirmPassword = Bekreft passord +user_form.loginId.error.invalid = Logginn id inneholder ugyldige tegn +user_form.loginId.error.exists = Logginn id finnes fra f\xBFr +user_form.passwordConfirm.error = Passordene er ikke like +user_form.mailPassword = send passord med epost +user_form.locked = L\x8Cst + +# logout +logout.title = Utloggingen var vellykket +logout.home = Hjem +logout.message = Utloggingen var vellykket. Alle aktive "husk-meg" sesjoner har blitt deaktivert. +logout.login = Logg inn + +# login +login.title = JTrac innlogging +login.home = Hjem +login.loginName = Logg inn navn / epost id +login.password = Passord +login.rememberMe = husk meg +login.submit = Send +login.error = Ugyldig brukernavn og/eller passord + +# config explanations (used in both config_list and config_form screens) +config.mail.server.host = Vertsnavn eller ip-adresse til SMTP-serveren som skal brukes til \x8C sende epost +config.mail.server.port = Port-nr brukt av SMTP-server (default 25) +config.mail.server.username = Brukernavn for SMTP-server hvis denne krever autentisering +config.mail.server.password = Passord for SMTP-server hvis denne krever autentisering +config.mail.server.starttls.enable = Bruk "true" for sikker (SSL) forbindelse hvis SMTP-serveren krever det +config.mail.subject.prefix = Tekst som vil bli lagt til i starten av epost tittel (standard [jtrac]) +config.mail.session.jndiname = javax.mail.Session JNDI navn - hvis angitt vil denne bli brukt i stedet for SMTP-detaljene over +config.mail.from = N\x8Cr epost genereres, vil denne bli brukt i stedet for 'fra' adressen +config.jtrac.url.base = Basis URL for JTrac installasjonen ( f.eks http://myserver/jtrac ) n\xBFdvendig for at linker i epost skal virke +config.jtrac.header.picture = Individuelt header-bilde +config.jtrac.header.text = Individuell header-tekst +config.jtrac.edit.item = Skal eieren av dette emnet redigere sine elementer? +config.locale.default = Standard spr\x8Ck for enne JTrac installasjonen f.eks "no" for Norsk +config.session.timeout = Tid i minutter for bruker-sesjonen (standard 30 minutter) +config.attachment.maxsize = Max str i MB p\x8C filvedlegg. (standard 5 MB) Bruk -1 for ingen begrensning + +# config_list (config_form does not have any extra messages) +config_list.configurationSettings = Konfigurasjonssettinger +config_list.parameter = Parameter N\xBFkkel +config_list.value = Verdi +config_list.edit = Rediger +config_list.description = Beskrivelse + +# excel_upload +excel_upload.uploadExcelFile = Last opp Excel fil +excel_upload.error.invalidFile = Feil ved prosessering av fil, kan v\xBEre at det ikke er en gyldig Excel-fil. + +# excel_view +excel_view.previewImportedData = Forh\x8Cndsvisning av importerte data +excel_view.selectActionToPerform = -- valg handling \x8C utf\xBFre -- +excel_view.deleteSelected = Slett valgte kolonner / rader +excel_view.convertToDate = Konverter formatet i valgte kolonner til dato +excel_view.concatenateFields = Sl\x8C sammen innholdet i valgte kolonner +excel_view.extractFirstEighty = Trekk ut f\xBFrste 80 tegn til en ny kolonne +excel_view.duplicateColumn = Dupliser valgte kolonne +excel_view.mapToField = Knytt valgte kolonne til omr\x8Cde-felt +excel_view.editRow = Rediger data for valgt rad +excel_view.import = Importer til valgt omr\x8Cde + +excel_view.error.noActionSelected = Velg en handling \x8C utf\xBFre +excel_view.error.noSpaceSelected = Velg et omr\x8Cde f\xBFrst +excel_view.error.noColumnSelected = Velg en kolonne +excel_view.error.noRowSelected = Velg en rad +excel_view.error.noColumnOrRowSelected = Velg kolonner/rader +excel_view.error.atLeastTwoColumns = Velg minst to kolonner +excel_view.error.duplicateMapping = Feltet er brukt mer enn to ganger: '{0}' +excel_view.error.notMapped = Feltet m\x8C knyttes opp mot noe: '{0}' +excel_view.error.invalidValue = Noen celler har ugyldige data + +excel_view.selectSpace = Velg omr\x8Cde +excel_view.selectedSpace = Valgt omr\x8Cde +excel_view.noSpaceSelected = (Ikke noe omr\x8Cde valgt) +excel_view.preview = Forh\x8Cndsvisning +excel_view.distinctValues = Bestemte verdier +excel_view.mapTo = Knytt til +excel_view.columnData = Kolonnedata +excel_view.selectedColumn = Valgt kolonne: +excel_view.update = Oppdater +excel_view.importSuccess = Import av poster var vellykket + +# exception_flow +exception_flow.unsupportedNavigation = Ikke st\xBFtte for denne navigasjonen +exception_flow.line1 = Nettleserens tilbakeknapp / relasting av side - er ikke st\xBFttet i denne versjonen. +exception_flow.line2 = Kan ikke rette opp denne feilen, s\x8C du m\x8C start denne navigasjonen p\x8C nytt +exception_flow.line3 = For \x8C unng\x8C denne feilen m\x8C du bruke knapper og linker i applikasjonen. + +# index_rebuild_success +index_rebuild.heading = Bygg indekser p\x8C nytt +index_rebuild.warning = Dette kan ta lang tid og det anbefales at ingen andre brukere er innlogget. + +# index_rebuild_success +index_rebuild_success.message = Bygging av indekser var vellykket + +# space_allocate +space_allocate.usersAllocatedToSpace = Brukere tilknyttet omr\x8Cdet +space_allocate.loginName = Logginn navn +space_allocate.fullName = Fullt navn +space_allocate.role = Rolle +space_allocate.remove = Fjern +space_allocate.allocateUser = Sett sammen bruker og rolle +space_allocate.createNewUser = Opprett ny bruker +space_allocate.user = Bruker +space_allocate.allocate = Sett sammen + +# space_delete +space_delete.confirm = Bekreft sletting av omr\x8Cde +space_delete.line1 = Are you sure that you want to delete this Space? +space_delete.line2 = This will delete all items within this Space. +space_delete.line3 = You cannot undo database updates for this operation. + +# space_field_delete +space_field_delete.confirm = Confirm Field Delete +space_field_delete.line1 = Er du sikker p\x8C at du vil slette dette omr\x8Cdet? +space_field_delete.line2 = Antall p\x8Cvirkede databaseregistreringer = {0} +space_field_delete.line3 = Du kan ikke gj\xBFre om endringer i databasen for denne operasjonen. + +# space_field_form +space_field_form.editField = Rediger felt +space_field_form.internalName = Internt navn +space_field_form.label = Etikett +space_field_form.optional = Valgfri +space_field_form.options = Alternativer +space_field_form.addOption = Legg til alternativ +space_field_form.update = Oppdater +space_field_form.done = Ferdig +space_field_form.error.optionExists = Alternativet finnes allerede + +# space_field_option_delete +space_field_option_delete.confirm = Confirm Option Delete +space_field_option_delete.line1 = Are you sure that you want to delete this Option? +space_field_option_delete.line2 = No of affected database records = {0} +space_field_option_delete.line3 = You cannot undo database updates for this operation. + +# space_field_option_edit +space_field_option_edit.editOption = Rediger alternativer for felt +space_field_option_edit.error.optionEmpty = Alternativ kan ikke v\xBEre tomt +space_field_option_edit.error.exists = Alternativ finnes allerede + +# space_fields +space_fields.customFields = Egendefinerte felt for omr\x8Cde +space_fields.move = Flytt +space_fields.internalName = Internt navn +space_fields.type = Type +space_fields.optional = Valgfri +space_fields.label = Etikett +space_fields.optionList = Liste av alternativer +space_fields.chooseType = Velg type egendefinert felt +space_fields.addField = Legg til felt +space_fields.type_1 = Alvorlighet (Drop Down) +space_fields.type_2 = Prioritering (Drop Down) +space_fields.type_3 = Nedtrekksliste +space_fields.type_4 = Desimaltall +space_fields.type_5 = Fritt tekstfelt +space_fields.type_6 = Datofelt +space_fields.typeRemaining = {0} igjen + +# space_form +space_form.spaceDetails = Omr\x8Cdedetaljer +space_form.displayName = Visningsnavn +space_form.spaceKey = Omr\x8Cden\xBFkkel (Kort navn) +space_form.description = Beskrivelse +space_form.makePublic = Gj\xBFr offentlig +space_form.allowGuest = Gi gjest kun lesetilgang +space_form.copyExisting = Kopier eksisterende omr\x8Cde +space_form.createFresh = opprett fra tomt omr\x8Cde +space_form.error.prefixCode.tooShort = Lengde skal v\xBEre minst 3 tegn. +space_form.error.prefixCode.tooLong = Lengde skal ikke v\xBEre mer enn 10 tegn +space_form.error.prefixCode.invalid = Bare store bokstaver og tall er tillatt +space_form.error.prefixCode.exists = Et omr\x8Cde med denne n\xBFkkelen finnes allerede + +# space_list +space_list.spaceList = Omr\x8Cdeliste +space_list.createNewSpace = Opprett nytt omr\x8Cde +space_list.key = N\xBFkkel +space_list.name = Navn +space_list.edit = Rediger +space_list.description = Beskrivelse +space_list.users = Brukere + +# space_role_delete +space_role_delete.confirm = Bekreft sletting av rolle +space_role_delete.line1 = Det finnes brukere knyttet til dett omr\x8Cdet ({0}) med denne rollen. +space_role_delete.line2 = Er du sikker p\x8C at du vil slette denne rollen? +space_role_delete.line3 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. + +# space_role_form +space_role_form.editRoleName = Rediger rollenavn +space_role_form.error.role.invalid = Rollenavn m\x8C v\xBEre store bokstaver eller tall ('_' tillatt inni) +space_role_form.error.role.exists = En rolle med dette navnet ekstisterer allerede +space_role_form.error.role.reserved = Dette rollenavnet er reservert til intern bruk + +# space_role_form_confirm +space_role_form_confirm.confirm = Bekreft rollenavn: {0} til {1} +space_role_form_confirm.line1 = Er du sikker p\x8C at du vil gi denne rollen nytt navn? +space_role_form_confirm.line2 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. + +# space_roles +space_roles.spaceRoles = Omr\x8Cderoller og statusforandringer (Arbeidsflyt) for omr\x8Cde +space_roles.addState = Legg til status +space_roles.addRole = Legg til rolle +space_roles.nextAllowedState = Neste tillatte status +space_roles.fieldLevelPermissions = Tillatelser p\x8C feltniv\x8C +space_roles.state = Status +space_roles.role = Rolle +space_roles.mandatory = P\x8Ckrevd +space_roles.optional = Valgfri +space_roles.readonly = Kun lese + +# space_state_delete +space_state_delete.confirm = Bekreft sletting av status +space_state_delete.line1 = Er du sikker p\x8C at du vil slette denne statusen? +space_state_delete.line2 = Antall endrede databaseregistreringer = {0} +space_state_delete.line3 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. + +# space_state_form +space_state_form.editState = Rediger status +space_state_form.error.state.invalid = Statusnavn m\x8C v\xBEre "Camel-Case - Status-Navn" med bindestrek ('-') for \x8C skille ord. 'Fast', 'P\x8C-Vent' eller 'Under-Arbeid' +space_state_form.error.state.exists = En status med dette navnet eksisterer allerede + +# user_allocate_space +user_allocate_space.spacesAllocated = Omr\x8Cder knyttet til denne brukeren +user_allocate_space.space = Omr\x8Cde +user_allocate_space.role = Rolle +user_allocate_space.remove = Fjern +user_allocate_space.chooseSpace = Velg et omr\x8Cde \x8C knytte til denne brukeren +user_allocate_space.makeUserAdmin = Gj\xBFr denne brukeren til en Administrator (for alle omr\x8Cder) +user_allocate_space.makeAdmin = Gj\xBFr til Admin +user_allocate_space.allSpaces = (alle omr\x8Cder) + +# user_allocate_space_role +user_allocate_space_role.allocateRole = Knytt rolle til bruker {0} innen omr\x8Cde +user_allocate_space_role.allocate = Knytt + +# user_list +user_list.usersAndSpaces = Brukere og tilknyttede omr\x8Cder +user_list.createNewUser = Opprett ny bruker +user_list.userName = Brukernavn +user_list.loginName = Logginn navn +user_list.editProfile = Rediger profil +user_list.locked = L\x8Cst +user_list.spaceRole = Omr\x8Cde (Rolle) +user_list.allocateSpaceRole = Tilknytt<br/>Omr\x8Cde / Rolle +user_list.locale = Spr\x8Ck +user_list.email = Epost +user_list.filterBy = Filtrer med + +# mail_sender (this is in the mail sending code, not a JSP) +mail_sender.loginMailSubject = JTrac logginn detaljer +mail_sender.loginMailGreeting = Hei +mail_sender.loginMailLine1 = Dine logginn detaljer har blitt opprettet / oppdatert slik: +mail_sender.loginName = Logginn navn +mail_sender.password = Passord +mail_sender.loginMailLine2 = Bruk linken under til \x8C logge inn: + +# new item_relate_remove +item_relate_remove.heading = Bekreft sletting av relasjon + +# item_delete +item_delete.confirm = Bekreft sletting av post +item_delete.line1 = Er du sikker p\x8C at du vil slette denne posten? +item_delete.line2 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. + +# user_delete +user_delete.confirm = Bekreft sletting av bruker +user_delete.line1 = Er du sikker p\x8C at du vil slette denne brukeren? +user_delete.line2 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. +user_delete.notPossible = Denne brukeren er brukt i poster og kan ikke slettes. Pr\xBFv \x8C l\x8Cse brukeren eller slette postene f\xBFrst. + +# generic error messages +error.itemBelongsToUnallocatedSpace = Du har ikke adgang til \x8C se denne posten + +# item search filter wizard +item_filter.showColumn = Vis i resultat +item_filter.expression = S\xBFkefilter +item_filter.expandAll = (ekspander alle) +item_filter.in = har verdier +item_filter.notIn = har ikke verdier +item_filter.like = inneholder tekst +item_filter.equal = er lik +item_filter.notEqual = er ikke lik +item_filter.greaterThan = st\xBFrre enn +item_filter.lessThan = mindre enn +item_filter.between = mellom \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2010-04-01 09:43:05
|
Revision: 1346 http://j-trac.svn.sourceforge.net/j-trac/?rev=1346&view=rev Author: manfredwolff Date: 2010-04-01 09:42:57 +0000 (Thu, 01 Apr 2010) Log Message: ----------- ID: #2979960: Solves problem with the indexer with databases which does not supports autoincrement index fields. Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/JtracImpl.java Modified: trunk/jtrac/src/main/java/info/jtrac/JtracImpl.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/JtracImpl.java 2009-12-15 12:00:57 UTC (rev 1345) +++ trunk/jtrac/src/main/java/info/jtrac/JtracImpl.java 2010-04-01 09:42:57 UTC (rev 1346) @@ -776,14 +776,18 @@ batchInfo.setTotalSize(totalSize); logger.info("total items to index: " + totalSize); int firstResult = 0; + long lastFetchedId = 0; while(true) { logger.info("processing batch starting from: " + firstResult + ", current: " + batchInfo.getCurrentPosition()); List<Item> items = dao.findAllItems(firstResult, batchInfo.getBatchSize()); for (Item item : items) { - indexer.index(item); + + indexer.index(item); + // currently history is indexed separately from item // not sure if this is a good thing, maybe it gives // more flexibility e.g. fine-grained search results + int historyCount = 0; for(History history : item.getHistory()) { indexer.index(history); @@ -794,10 +798,17 @@ + " : " + item.getRefId() + ", history: " + historyCount); } batchInfo.incrementPosition(); + lastFetchedId = item.getId(); } - logger.debug("size of current batch: " + items.size()); + if(logger.isDebugEnabled()) { + logger.debug("size of current batch: " + items.size()); + logger.debug("last fetched Id: " + lastFetchedId); + } firstResult += batchInfo.getBatchSize(); - if(batchInfo.isComplete() || firstResult > totalSize) { + if(logger.isDebugEnabled()) { + logger.debug("setting firstResult to: " + firstResult); + } + if(batchInfo.isComplete()) { logger.info("batch completed at position: " + batchInfo.getCurrentPosition()); break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2009-12-15 12:01:06
|
Revision: 1345 http://j-trac.svn.sourceforge.net/j-trac/?rev=1345&view=rev Author: manfredwolff Date: 2009-12-15 12:00:57 +0000 (Tue, 15 Dec 2009) Log Message: ----------- Little update for the headline Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/IndividualHeadPanel.html Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/IndividualHeadPanel.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/IndividualHeadPanel.html 2009-12-15 12:00:15 UTC (rev 1344) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/IndividualHeadPanel.html 2009-12-15 12:00:57 UTC (rev 1345) @@ -1,7 +1,7 @@ <wicket:panel> <table width="100%" class="jtrac alt" padding="4"> <tr> - <td width="2%" align="left"><img height="55px" wicket:id="icon"/></td> + <td width="20%" align="left"><img height="55px" wicket:id="icon"/></td> <td align="left"><b><div wicket:id="message">[text goes here]</div></b></td> </tr> </table> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2009-12-15 12:00:23
|
Revision: 1344 http://j-trac.svn.sourceforge.net/j-trac/?rev=1344&view=rev Author: manfredwolff Date: 2009-12-15 12:00:15 +0000 (Tue, 15 Dec 2009) Log Message: ----------- Patch for oracle users using oracle < 11 Added Paths: ----------- trunk/jtrac/src/main/resources/jtrac.hbm-oralce.xml.patch Added: trunk/jtrac/src/main/resources/jtrac.hbm-oralce.xml.patch =================================================================== --- trunk/jtrac/src/main/resources/jtrac.hbm-oralce.xml.patch (rev 0) +++ trunk/jtrac/src/main/resources/jtrac.hbm-oralce.xml.patch 2009-12-15 12:00:15 UTC (rev 1344) @@ -0,0 +1,13 @@ +Index: jtrac.hbm.xml +=================================================================== +--- jtrac.hbm.xml (revision 1323) ++++ jtrac.hbm.xml (working copy) +@@ -120,7 +120,7 @@ + <many-to-one name="parent" column="item_id" not-null="true"/> + <property name="actualEffort" column="actual_effort"/> + <many-to-one name="attachment" column="attachment_id"/> +- <property name="comment" column="comment" type="text"/> ++ <property name="comment" column="jt_comment" type="text"/> + <!-- identical to Item --> + <property name="timeStamp" column="time_stamp"/> + <many-to-one name="loggedBy" column="logged_by" not-null="true"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ptr...@us...> - 2009-12-10 14:58:37
|
Revision: 1343 http://j-trac.svn.sourceforge.net/j-trac/?rev=1343&view=rev Author: ptrthomas Date: 2009-12-10 14:58:28 +0000 (Thu, 10 Dec 2009) Log Message: ----------- maven tests now work fine after proper excludes Modified Paths: -------------- trunk/jtrac/pom.xml Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2009-12-10 14:42:53 UTC (rev 1342) +++ trunk/jtrac/pom.xml 2009-12-10 14:58:28 UTC (rev 1343) @@ -468,9 +468,19 @@ </systemProperties> </configuration> </plugin> - --> + --> <plugin> <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <excludes> + <exclude>info/jtrac/selenium/**</exclude> + <exclude>info/jtrac/test/**</exclude> + </excludes> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <configuration> <templateFile>src/site/resources/template/maven-site.vm</templateFile> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ptr...@us...> - 2009-12-10 14:43:04
|
Revision: 1342 http://j-trac.svn.sourceforge.net/j-trac/?rev=1342&view=rev Author: ptrthomas Date: 2009-12-10 14:42:53 +0000 (Thu, 10 Dec 2009) Log Message: ----------- moving to maven-ant-tasks instead of custom maven plugin, refer http://is.gd/5hVQ7 - jetty start targets seem ok, others need more testing, also the "ant all" target works, can be used for pre-release testing, netbeans project files have been removed, developers can open project using maven support from now on Modified Paths: -------------- trunk/jtrac/build.xml trunk/jtrac/pom.xml Added Paths: ----------- trunk/jtrac/etc/maven-ant-tasks.jar Removed Paths: ------------- trunk/jtrac/nbproject/ Modified: trunk/jtrac/build.xml =================================================================== --- trunk/jtrac/build.xml 2009-12-09 13:28:27 UTC (rev 1341) +++ trunk/jtrac/build.xml 2009-12-10 14:42:53 UTC (rev 1342) @@ -7,10 +7,36 @@ findbugs.home=C:/peter/opt/findbugs-1.3.1 [optional, for running findbugs] --> - <property file="build.properties"/> - <property file="build-deps.properties"/> + <property file="build.properties"/> <property name="war.name" value="jtrac"/> + <!-- ========================= MAVEN ============================ --> + + <target name="mvn-init" unless="mvn.inited" xmlns:artifact="urn:maven-artifact-ant"> + <property name="mvn.inited" value="true"/> + <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" + classpath="etc/maven-ant-tasks.jar"/> + <condition property="maven.repo.local" value="${maven.repo.local}" else="${user.home}/.m2/repository"> + <isset property="maven.repo.local"/> + </condition> + <artifact:localRepository id="local.repository" path="${maven.repo.local}"/> + <artifact:pom file="pom.xml" id="maven.project"/> + <artifact:dependencies pathId="compile.classpath" filesetId="compile.fileset" useScope="compile"> + <pom refid="maven.project"/> + <localRepository refid="local.repository"/> + </artifact:dependencies> + <artifact:dependencies pathId="test.classpath" filesetId="test.fileset" useScope="test"> + <pom refid="maven.project"/> + <localRepository refid="local.repository"/> + </artifact:dependencies> + <artifact:dependencies pathId="runtime.classpath" filesetId="runtime.fileset" useScope="runtime"> + <pom refid="maven.project"/> + <localRepository refid="local.repository"/> + </artifact:dependencies> + </target> + + <!-- ============================= BUILD =============================== --> + <target name="clean"> <delete includeemptydirs="true" failonerror="false"> <fileset dir="target"/> @@ -25,7 +51,7 @@ </delete> </target> - <target name="compile"> + <target name="compile" depends="mvn-init"> <mkdir dir="target/classes"/> <property name="debug" value="true"/> <!-- @@ -33,7 +59,7 @@ <isset property="production.mode"/> </condition> --> - <javac srcdir="src/main/java" destdir="target/classes" debug="${debug}" classpath="${test.jars}" target="1.5"> + <javac srcdir="src/main/java" destdir="target/classes" debug="${debug}" classpathref="compile.classpath" target="1.5"> <!-- <compilerarg value="-Xlint:unchecked"/> --> <compilerarg value="-Xlint:deprecation"/> </javac> @@ -73,9 +99,9 @@ <target name="hbm-export" depends="compile"> <input message="Hibernate Dialect:" addproperty="dialect"/> <java classname="org.hibernate.tool.hbm2ddl.SchemaExport" fork="true"> - <classpath> - <path path="${test.jars}"/> - <path path="target/classes"/> + <classpath> + <path path="target/classes"/> + <path refid="test.classpath"/> </classpath> <jvmarg value="-Dhibernate.dialect=${dialect}"/> <arg value="--text"/> @@ -87,8 +113,7 @@ <!-- cannot be used when jtrac application is connected --> <target name="hsqldb-manager"> - <java classname="org.hsqldb.util.DatabaseManagerSwing" fork="true"> - <classpath path="${test.jars}"/> + <java classname="org.hsqldb.util.DatabaseManagerSwing" fork="true" classpathref="test.classpath"> <arg line="-url jdbc:hsqldb:file:home/db/jtrac"/> </java> </target> @@ -140,14 +165,8 @@ <exclude name="doc/**"/> </fileset> </delete> - </target> + </target> - <target name="dist-lib"> - <copy todir="lib"> - <fileset dir="${m2.repo}" includes="${all.jars}" casesensitive="false"/> - </copy> - </target> - <target name="dist-jtrac-src"> <mkdir dir="target"/> <zip destfile="target/jtrac-src.zip"> @@ -158,32 +177,21 @@ </zip> </target> - <target name="mvn-export"> - <copy todir="lib"> - <fileset dir="${m2.repo}" includes="${all.jars}" casesensitive="false"/> - </copy> - </target> - <!-- ========================== TEST ============================ --> - <target name="all" depends="clean, compile-test"> - <checkstyle-macro/> - <style in="target/reports/checkstyle.xml" out="target/reports/checkstyle.html" - style="etc/checkstyle-noframes-sorted.xsl"/> - <antcall target="test-coverage"/> - </target> + <target name="all" depends="clean, compile-test, checkstyle, test-coverage"/> <target name="compile-test" depends="compile"> <mkdir dir="target/test-classes"/> <javac srcdir="src/test/java" destdir="target/test-classes" debug="true" target="1.5"> <classpath> <path path="target/classes"/> - <path path="${test.jars}"/> + <path refid="test.classpath"/> </classpath> </javac> </target> - <target name="test-coverage" depends="compile-test"> + <target name="test-coverage" depends="emma-init, compile-test"> <test-macro emmaEnabled="true"/> <junitreport todir="target/reports"> <fileset dir="target/reports"> @@ -213,7 +221,7 @@ <path id="test-classpath"> <path path="target/classes"/> <path path="target/test-classes"/> - <path path="${test.jars}"/> + <path refid="test.classpath"/> </path> <nbjpdastart name="${files}" addressproperty="jpda.address" transport="dt_socket"> <classpath refid="test-classpath"/> @@ -236,7 +244,7 @@ <path id="test-classpath"> <path path="target/classes"/> <path path="target/test-classes"/> - <path path="${test.jars}"/> + <path refid="test.classpath"/> </path> <junit fork="true" dir="." tempdir="target"> <classpath refid="test-classpath"/> @@ -248,7 +256,13 @@ </junit> </target> - <taskdef resource="emma_ant.properties" classpath="${emma.jars}"/> + <target name="emma-init" depends="mvn-init" xmlns:artifact="urn:maven-artifact-ant"> + <artifact:dependencies pathId="emma.classpath"> + <dependency groupId="emma" artifactId="emma" version="2.0.5312"/> + <dependency groupId="emma" artifactId="emma_ant" version="2.0.5312"/> + </artifact:dependencies> + <taskdef resource="emma_ant.properties" classpathref="emma.classpath"/> + </target> <macrodef name="test-macro"> <attribute name="includes" default="**/*Test.java"/> @@ -272,8 +286,8 @@ <path path="target/instr-classes"/> <path path="target/classes"/> <path path="target/test-classes"/> - <path path="${test.jars}"/> - <path path="${emma.jars}"/> + <path refid="test.classpath"/> + <path refid="emma.classpath"/> </classpath> <jvmarg value="-Demma.coverage.out.file=${basedir}/target/coverage.emma"/> <jvmarg value="-Demma.coverage.out.merge=true"/> @@ -296,18 +310,28 @@ <!-- ======================= CHECKSTYLE ========================= --> - <taskdef resource="checkstyletask.properties" classpath="${checkstyle.jars}"/> + <target name="checkstyle-init" depends="mvn-init" xmlns:artifact="urn:maven-artifact-ant"> + <artifact:dependencies pathId="checkstyle.classpath"> + <dependency groupId="checkstyle" artifactId="checkstyle" version="4.3"/> + </artifact:dependencies> + <taskdef resource="checkstyletask.properties" classpathref="checkstyle.classpath"/> + </target> - <target name="checkstyle"> + <target name="checkstyle" depends="checkstyle-init"> <checkstyle-macro/> + <style + in="target/reports/checkstyle.xml" + out="target/reports/checkstyle.html" + style="etc/checkstyle-noframes-sorted.xsl"/> + </target> + + <target name="checkstyle-dump" depends="checkstyle"> <concat> <fileset dir="target/reports" includes="checkstyle.txt"/> </concat> - <style in="target/reports/checkstyle.xml" out="target/reports/checkstyle.html" - style="etc/checkstyle-noframes-sorted.xsl"/> </target> - <target name="checkstyle-single" depends="compile"> + <target name="checkstyle-single" depends="compile, checkstyle-init"> <!-- files property expected from netbeans --> <fail unless="files">no files selected</fail> <checkstyle-macro files="${files}"/> @@ -327,7 +351,7 @@ <!-- <fileset dir="src/main/resources" includes="@{files}"/> --> <classpath> <path path="target/classes"/> - <path path="${test.jars}"/> + <path refid="test.classpath"/> </classpath> <formatter type="xml" toFile="target/reports/checkstyle.xml"/> <formatter type="plain" toFile="target/reports/checkstyle.txt"/> @@ -338,8 +362,7 @@ <!-- ========================= FINDBUGS ========================= --> <target name="findbugs" depends="compile"> - <java classname="bsh.Interpreter" fork="true"> - <classpath path="${test.jars}"/> + <java classname="bsh.Interpreter" fork="true" classpathref="test.classpath"> <arg line="etc/findbugs-project-gen.bsh"/> </java> <path id="findbugs.classpath"> @@ -352,20 +375,25 @@ </target> <target name="findbugs-console-dump"> - <java classname="bsh.Interpreter" fork="true"> - <classpath path="${test.jars}"/> + <java classname="bsh.Interpreter" fork="true" classpathref="test.classpath"> <arg line="etc/findbugs-console-dump.bsh"/> </java> </target> <!-- =========================== PMD ============================ --> - <target name="pmd"> + <target name="pmd-init" depends="mvn-init" xmlns:artifact="urn:maven-artifact-ant"> + <artifact:dependencies pathId="pmd.classpath"> + <dependency groupId="pmd" artifactId="pmd" version="4.1.1"/> + </artifact:dependencies> + </target> + + <target name="pmd" depends="pmd-init"> <mkdir dir="target/reports"/> <java classname="net.sourceforge.pmd.PMD" fork="true" output="target/reports/pmd.xml"> <classpath> - <path path="${pmd.jars}"/> - <path path="${test.jars}"/> + <path refid="pmd.classpath"/> + <path refid="test.classpath"/> </classpath> <jvmarg value="-Xmx512m"/> <arg value="src/main/java"/> @@ -375,18 +403,17 @@ </target> <target name="pmd-console-dump"> - <java classname="bsh.Interpreter" fork="true"> - <classpath path="${test.jars}"/> + <java classname="bsh.Interpreter" fork="true" classpathref="test.classpath"> <arg line="etc/pmd-console-dump.bsh"/> </java> </target> - <target name="pmd-cpd"> + <target name="pmd-cpd" depends="pmd-init"> <mkdir dir="target/reports"/> <java classname="net.sourceforge.pmd.cpd.CPD" fork="true"> <classpath> - <path path="${pmd.jars}"/> - <path path="${test.jars}"/> + <path refid="pmd.classpath"/> + <path refid="test.classpath"/> </classpath> <jvmarg value="-Xmx512m"/> <arg line="--minimum-tokens 100"/> @@ -415,7 +442,13 @@ <fail if="abort">User aborted.</fail> </target> - <target name="jetty-setup" depends="war-exploded"> + <target name="jetty-setup" depends="war-exploded" xmlns:artifact="urn:maven-artifact-ant"> + <artifact:dependencies filesetId="jetty.jars"> + <dependency groupId="org.mortbay.jetty" artifactId="jetty" version="6.1.1"/> + </artifact:dependencies> + <artifact:dependencies filesetId="jetty.start"> + <dependency groupId="org.mortbay.jetty" artifactId="start" version="6.1.1"/> + </artifact:dependencies> <copy todir="target/jetty/lib" flatten="true"> <fileset dir="${m2.repo}" includes="${jetty.jars}" casesensitive="false"/> </copy> @@ -546,7 +579,7 @@ <!-- ========================= SELENIUM ============================ --> <target name="selenium-start"> - <java classname="org.openqa.selenium.server.SeleniumServer" fork="true" classpath="${test.jars}"/> + <java classname="org.openqa.selenium.server.SeleniumServer" fork="true" classpathref="test.classpath"/> </target> <target name="selenium-stop"> @@ -576,7 +609,8 @@ <sourcepath> <path path="src/main/java"/> </sourcepath> - </nbjpdaconnect> + </nbjpdaconnect> + <nbbrowse url="http://localhost:8080/jtrac"/> </target> <!-- target for NetBeans Profiler on Windows --> @@ -584,6 +618,6 @@ <property name="nbprof.home" value="${netbeans.home}/../profiler2/lib"/> <property name="agent.path" value="${nbprof.home}/deployed/jdk15/windows/profilerinterface.dll=${nbprof.home},5140"/> <jetty-start arg1="-agentpath:${agent.path}" arg2="-Xmx512m" wicketConfig=""/> - </target> + </target> </project> Added: trunk/jtrac/etc/maven-ant-tasks.jar =================================================================== (Binary files differ) Property changes on: trunk/jtrac/etc/maven-ant-tasks.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2009-12-09 13:28:27 UTC (rev 1341) +++ trunk/jtrac/pom.xml 2009-12-10 14:42:53 UTC (rev 1342) @@ -5,7 +5,7 @@ <groupId>info.jtrac</groupId> <artifactId>jtrac</artifactId> <packaging>war</packaging> - <version>2.1.0</version> + <version>2.2.0</version> <name>JTrac</name> <description> JTrac is a generic issue-tracking web-application that can be easily customized by adding custom fields @@ -53,13 +53,19 @@ <url>http://ptrthomas.wordpress.com</url> <timezone>+5.5</timezone> </developer> + <developer> + <name>Manfred Wolff</name> + <id>manfredwolff</id> + <url>http://pointers.de</url> + <timezone>+1</timezone> + </developer> </developers> <repositories> <repository> <id>openqa.org</id> <name>selenium snapshot</name> - <url>http://nexus.openqa.org/service/local/repositories/releases/content</url> + <url>http://nexus.openqa.org/service/local/repositories/releases/content</url> </repository> </repositories> @@ -462,79 +468,8 @@ </systemProperties> </configuration> </plugin> - --> - <!-- - - the info.jtrac/maven-antprops-plugin below - - is a custom plugin to make dependencies available - - to an Ant build and then some, comment out if required - --> + --> <plugin> - <groupId>info.jtrac</groupId> - <artifactId>maven-antprops-plugin</artifactId> - <configuration> - <extraPaths> - <extraPath> - <name>checkstyle.jars</name> - <dependencies> - <dependency> - <groupId>checkstyle</groupId> - <artifactId>checkstyle</artifactId> - <version>4.3</version> - </dependency> - </dependencies> - </extraPath> - <extraPath> - <name>emma.jars</name> - <dependencies> - <dependency> - <groupId>emma</groupId> - <artifactId>emma</artifactId> - <version>2.0.5312</version> - </dependency> - <dependency> - <groupId>emma</groupId> - <artifactId>emma_ant</artifactId> - <version>2.0.5312</version> - </dependency> - </dependencies> - </extraPath> - <extraPath> - <name>pmd.jars</name> - <dependencies> - <dependency> - <groupId>pmd</groupId> - <artifactId>pmd</artifactId> - <version>4.1.1</version> - <resolve>false</resolve> - </dependency> - </dependencies> - </extraPath> - <extraPath> - <fileset>true</fileset> - <name>jetty.jars</name> - <dependencies> - <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jetty</artifactId> - <version>6.1.1</version> - </dependency> - </dependencies> - </extraPath> - <extraPath> - <fileset>true</fileset> - <name>jetty.start</name> - <dependencies> - <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>start</artifactId> - <version>6.1.1</version> - </dependency> - </dependencies> - </extraPath> - </extraPaths> - </configuration> - </plugin> - <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <configuration> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2009-12-09 13:29:13
|
Revision: 1341 http://j-trac.svn.sourceforge.net/j-trac/?rev=1341&view=rev Author: manfredwolff Date: 2009-12-09 13:28:27 +0000 (Wed, 09 Dec 2009) Log Message: ----------- Better explanation of the "owner of a task should edit it" in the configuration. Modified Paths: -------------- trunk/jtrac/src/main/resources/messages_de.properties trunk/jtrac/src/main/resources/messages_en.properties Modified: trunk/jtrac/src/main/resources/messages_de.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_de.properties 2009-12-09 13:24:24 UTC (rev 1340) +++ trunk/jtrac/src/main/resources/messages_de.properties 2009-12-09 13:28:27 UTC (rev 1341) @@ -187,7 +187,7 @@ config.jtrac.url.base = URL dieser Installation ( zB. http://myserver/jtrac ) wird ben\u00F6tigt f\u00FCr Links in den eMails config.jtrac.header.picture = Inidividuelles Bild config.jtrac.header.text = Individueller Text -config.jtrac.edit.item = Soll der Ersteller eines Eintrages diesen editieren k\xF6nnen? +config.jtrac.edit.item = Soll der Ersteller eines Eintrages diesen editieren k\xF6nnen? (setzte auf true, default ist false) config.locale.default = Default Sprache zB. "de" f\u00FCr Deutsch config.session.timeout = Session Timeout in Minuten (Default 30 Minuten) config.attachment.maxsize = Maximalgr\u00F6\u00DFe f\u00FCr Anlagen in MB, "-1" f\u00FCr Kein-Limit (Default 5) Modified: trunk/jtrac/src/main/resources/messages_en.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_en.properties 2009-12-09 13:24:24 UTC (rev 1340) +++ trunk/jtrac/src/main/resources/messages_en.properties 2009-12-09 13:28:27 UTC (rev 1341) @@ -188,7 +188,7 @@ config.jtrac.url.base = Base URL of your JTrac installation ( e.g. http://myserver/jtrac ) required for links in the e-mails to work config.jtrac.header.picture = Individual header picture config.jtrac.header.text = Individual header text -config.jtrac.edit.item = Should the owner of the task edit their items? +config.jtrac.edit.item = Should the owner of the task edit their items? (set to true, default is false) config.locale.default = Default language used for this JTrac installation e.g. "de" for German config.session.timeout = Time in minutes after which user session expires (default 30 minutes) config.attachment.maxsize = Maximum size in MB of file-attachments. (default 5 MB) Use -1 for no-limit This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2009-12-09 13:24:33
|
Revision: 1340 http://j-trac.svn.sourceforge.net/j-trac/?rev=1340&view=rev Author: manfredwolff Date: 2009-12-09 13:24:24 +0000 (Wed, 09 Dec 2009) Log Message: ----------- The owner can edit a task if it is configured with the jtrac.edit.item configuation is true! Otherwise this feature is disabled. Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.java Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.java 2009-12-08 15:06:08 UTC (rev 1339) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.java 2009-12-09 13:24:24 UTC (rev 1340) @@ -16,6 +16,8 @@ package info.jtrac.wicket; +import java.util.Map; + import info.jtrac.domain.Item; import info.jtrac.domain.ItemSearch; import info.jtrac.domain.User; @@ -80,14 +82,16 @@ } // Edit: Also the owner of the item should change it. + final Map<String, String> configMap = getJtrac().loadAllConfig(); + String shouldEdit = configMap.get("jtrac.edit.item"); add(new Link("edit") { public void onClick() { setResponsePage(new ItemFormPage(item.getId())); } - }.setVisible(item.getLoggedBy().getLoginName().equals(user.getLoginName()) || + }.setVisible((item.getLoggedBy().getLoginName().equals(user.getLoginName()) && + ("true".equals(shouldEdit))) || user.isSuperUser() || user.isAdminForSpace(item.getSpace().getId()))); - add(new ItemViewPanel("itemViewPanel", item, isRelate || user.getId() == 0)); if(user.isGuestForSpace(item.getSpace()) || isRelate) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |