Merge from trunk 10701

This commit is contained in:
Yuriy Artamonov 2013-03-28 14:04:08 +00:00
parent 5bc17c2546
commit 66b4526e12
6 changed files with 39 additions and 26 deletions

View File

@ -10253,8 +10253,8 @@ try {
<section id="folders_pane">
<title>Панель папок</title>
<para>Панель папок предназначена для быстрого доступа пользователя к часто используемой информации. Она представляет собой скрываемую панель в левой части главного окна приложения, в которой располагается иерархическая структура, нажатие на элементы которой (папки) приводит к отображению соответствующих экранов системы с определенными параметрами.</para>
<para id="">На момент написания данного руководства панель папок реализована только для <link linkend="app_tiers">Web Client</link>. </para>
<para id="">Платформа поддерживает три вида папок: <firstterm>папки приложения</firstterm>, <firstterm>папки поиска</firstterm> и <firstterm>наборы</firstterm> записей. Папки приложения отображаются в верхней части панели в отдельной иерархии, папки поиска и наборы - в нижней части панели в совместной иерархии. <itemizedlist>
<para>На момент написания данного руководства панель папок реализована только для <link linkend="app_tiers">Web Client</link>. </para>
<para>Платформа поддерживает три вида папок: <firstterm>папки приложения</firstterm>, <firstterm>папки поиска</firstterm> и <firstterm>наборы</firstterm> записей. Папки приложения отображаются в верхней части панели в отдельной иерархии, папки поиска и наборы - в нижней части панели в совместной иерархии. <itemizedlist>
<listitem>
<para>Папки приложения:<itemizedlist>
<listitem>

View File

@ -18,6 +18,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.util.ResourceUtils;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -125,9 +126,17 @@ public class RemotingServlet extends DispatcherServlet {
remoteClientInfo.setPort(request.getRemotePort());
RemoteClientInfo.set(remoteClientInfo);
try {
super.doService(request, response);
} finally {
RemoteClientInfo.clear();
}
}
super.doService(request, response);
RemoteClientInfo.clear();
@Override
protected ModelAndView processHandlerException(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
log.error("Error processing request", ex);
return super.processHandlerException(request, response, handler, ex);
}
}

View File

@ -10,7 +10,7 @@ import com.haulmont.chile.core.model.Instance;
import com.haulmont.chile.core.model.MetaProperty;
import com.haulmont.cuba.core.entity.Entity;
import com.haulmont.cuba.core.global.AppBeans;
import com.haulmont.cuba.core.global.MessageProvider;
import com.haulmont.cuba.core.global.Messages;
import com.haulmont.cuba.gui.WindowManager;
import com.haulmont.cuba.gui.components.AbstractAction;
import com.haulmont.cuba.gui.components.*;
@ -73,7 +73,7 @@ public class DesktopTokenList extends DesktopAbstractField<DesktopTokenList.Toke
impl = new TokenListImpl();
addButton = new DesktopButton();
addButton.setCaption(MessageProvider.getMessage(TokenList.class, "actions.Add"));
addButton.setCaption(AppBeans.get(Messages.class).getMessage(TokenList.class, "actions.Add"));
lookupPickerField = new DesktopLookupPickerField();
@ -242,7 +242,6 @@ public class DesktopTokenList extends DesktopAbstractField<DesktopTokenList.Toke
@Override
public void setMultiSelect(boolean multiselect) {
this.multiselect = multiselect;
lookupPickerField.setMultiSelect(multiselect);
}
@Override

View File

@ -1,12 +1,7 @@
/*
* Copyright (c) 2008 Haulmont Technology Ltd. All Rights Reserved.
* Copyright (c) 2013 Haulmont Technology Ltd. All Rights Reserved.
* Haulmont Technology proprietary and confidential.
* Use is subject to license terms.
* Author: Konstantin Krivopustov
* Created: 26.12.2008 9:53:52
*
* $Id$
*/
package com.haulmont.cuba.core.global;
@ -18,7 +13,10 @@ import java.util.Set;
import java.util.regex.Matcher;
/**
* Implementation of {@link QueryTransformer} based on regular expressions
* Implementation of {@link QueryTransformer} based on regular expressions.
*
* @author krivopustov
* @version $Id$
*/
public class QueryTransformerRegex extends QueryParserRegex implements QueryTransformer
{
@ -47,7 +45,7 @@ public class QueryTransformerRegex extends QueryParserRegex implements QueryTran
else
sb.append(" where ");
if (where.indexOf(ALIAS_PLACEHOLDER) >= 0) {
if (where.contains(ALIAS_PLACEHOLDER)) {
// replace ALIAS_PLACEHOLDER
sb.append(where);
int idx;
@ -143,7 +141,13 @@ public class QueryTransformerRegex extends QueryParserRegex implements QueryTran
if (!StringUtils.isBlank(join)) {
buffer.insert(insertPos, " ");
insertPos++;
int joinLen = insertReplacingAlias(buffer, insertPos, join, alias);
int joinLen;
if (join.contains(ALIAS_PLACEHOLDER)) {
joinLen = join.length();
buffer.insert(insertPos, join);
} else {
joinLen = insertReplacingAlias(buffer, insertPos, join, alias);
}
insertPos += joinLen;
Matcher paramMatcher = PARAM_PATTERN.matcher(join);

View File

@ -95,9 +95,10 @@ public class RuntimePropsDatasourceImpl
valuesContext.setView("_local");
List<CategoryAttribute> attributes = dataSupplier.loadList(attributesContext);
Map<String, Object> variables = new HashMap<String, Object>();
Map<String, CategoryAttributeValue> categoryValues = new HashMap<String, CategoryAttributeValue>();
Map<String, Object> variables = new HashMap<>();
Map<String, CategoryAttributeValue> categoryValues = new HashMap<>();
TimeSource timeSource = AppBeans.get(TimeSource.NAME);
for (CategoryAttribute attribute : attributes) {
CategoryAttributeValue attrValue = getValue(attribute, entityValues);
Object value;
@ -111,7 +112,7 @@ public class RuntimePropsDatasourceImpl
attrValue.setDoubleValue(attribute.getDefaultDouble());
attrValue.setBooleanValue(attribute.getDefaultBoolean());
attrValue.setDateValue(BooleanUtils.isTrue(attribute.getDefaultDateIsCurrent()) ?
TimeProvider.currentTimestamp() : attribute.getDefaultDate());
timeSource.currentTimestamp() : attribute.getDefaultDate());
attrValue.setEntityValue(attribute.getDefaultEntityId());
value = parseValue(attribute, attrValue);
itemToUpdate.add(attrValue);
@ -163,7 +164,8 @@ public class RuntimePropsDatasourceImpl
String.format("Can't find property '%s' in datasource '%s'", property, this.getId()));
}
DsBuilder builder = new DsBuilder(getDsContext());
builder.reset().setMetaClass(MetadataProvider.getSession().getClass(SetValueEntity.class)).setId(id).setViewName("_minimal").setSoftDeletion(false);
builder.reset().setMetaClass(metadata.getSession().getClass(SetValueEntity.class)).setId(id)
.setViewName("_minimal").setSoftDeletion(false);
final CollectionDatasource datasource;
@ -182,7 +184,7 @@ public class RuntimePropsDatasourceImpl
private List<SetValueEntity> getOptions(CategoryAttribute attribute, SetValueEntity attributeValue) {
String enumeration = attribute.getEnumeration();
String[] values = StringUtils.split(enumeration, ',');
List<SetValueEntity> options = new LinkedList<SetValueEntity>();
List<SetValueEntity> options = new LinkedList<>();
for (String value : values) {
String trimmedValue = StringUtils.trimToNull(value);
if (trimmedValue != null) {
@ -268,7 +270,7 @@ public class RuntimePropsDatasourceImpl
try {
Class clazz = Class.forName(entityType);
LoadContext entitiesContext = new LoadContext(clazz);
String entityClassName = MetadataProvider.getSession().getClass(clazz).getName();
String entityClassName = metadata.getSession().getClassNN(clazz).getName();
LoadContext.Query query = entitiesContext.setQueryString("select a from " + entityClassName + " a where a.id =:e");
query.addParameter("e", uuid);
entitiesContext.setView("_local");
@ -339,7 +341,7 @@ public class RuntimePropsDatasourceImpl
}
public View getView() {
return view;
return null; // null is correct
}
public void initialized() {
@ -391,7 +393,7 @@ public class RuntimePropsDatasourceImpl
LoadContext categoryContext = new LoadContext(Category.class);
LoadContext.Query query = categoryContext.setQueryString(
"select c from sys$Category c where c.isDefault = true and c.entityType=:type ");
query.addParameter("type", MetadataProvider.getSession().getClass(entity.getClass()).getName());
query.addParameter("type", metadata.getSession().getClassNN(entity.getClass()).getName());
categoryContext.setView("_minimal");
List<Category> categories = dataSupplier.loadList(categoryContext);
if (!categories.isEmpty())

View File

@ -263,7 +263,6 @@ public class WebTokenList /*extends WebAbstractField<WebTokenList.TokenListImpl>
@Override
public void setMultiSelect(boolean multiselect) {
this.multiselect = multiselect;
lookupPickerField.setMultiSelect(multiselect);
}
@Override