protected void readExpandoTables(PortletDataContext portletDataContext) throws Exception { String xml = portletDataContext.getZipEntryAsString( ExportImportPathUtil.getSourceRootPath(portletDataContext) + "/expando-tables.xml"); if (xml == null) { return; } Document document = SAXReaderUtil.read(xml); Element rootElement = document.getRootElement(); List<Element> expandoTableElements = rootElement.elements("expando-table"); for (Element expandoTableElement : expandoTableElements) { String className = expandoTableElement.attributeValue("class-name"); ExpandoTable expandoTable = null; try { expandoTable = _expandoTableLocalService.getDefaultTable(portletDataContext.getCompanyId(), className); } catch (NoSuchTableException nste) { expandoTable = _expandoTableLocalService.addDefaultTable(portletDataContext.getCompanyId(), className); } List<Element> expandoColumnElements = expandoTableElement.elements("expando-column"); for (Element expandoColumnElement : expandoColumnElements) { long columnId = GetterUtil.getLong(expandoColumnElement.attributeValue("column-id")); String name = expandoColumnElement.attributeValue("name"); int type = GetterUtil.getInteger(expandoColumnElement.attributeValue("type")); String defaultData = expandoColumnElement.elementText("default-data"); String typeSettings = expandoColumnElement.elementText("type-settings"); Serializable defaultDataObject = ExpandoConverterUtil.getAttributeFromString(type, defaultData); ExpandoColumn expandoColumn = _expandoColumnLocalService.getColumn(expandoTable.getTableId(), name); if (expandoColumn != null) { _expandoColumnLocalService.updateColumn( expandoColumn.getColumnId(), name, type, defaultDataObject); } else { expandoColumn = _expandoColumnLocalService.addColumn( expandoTable.getTableId(), name, type, defaultDataObject); } _expandoColumnLocalService.updateTypeSettings(expandoColumn.getColumnId(), typeSettings); portletDataContext.importPermissions( ExpandoColumn.class, columnId, expandoColumn.getColumnId()); } } }
protected void deleteSocialOfficeLayoutSetPrototypes(long companyId) throws Exception { LayoutSetPrototype layoutSetPrototype = LayoutSetPrototypeUtil.fetchLayoutSetPrototype( companyId, SocialOfficeConstants.LAYOUT_SET_PROTOTYPE_KEY_SITE); if (layoutSetPrototype != null) { try { LayoutSetPrototypeLocalServiceUtil.deleteLayoutSetPrototype(layoutSetPrototype); } catch (Exception e) { _log.error(e, e); } } layoutSetPrototype = LayoutSetPrototypeUtil.fetchLayoutSetPrototype( companyId, SocialOfficeConstants.LAYOUT_SET_PROTOTYPE_KEY_USER_PRIVATE); if (layoutSetPrototype != null) { try { LayoutSetPrototypeLocalServiceUtil.deleteLayoutSetPrototype(layoutSetPrototype); } catch (Exception e) { _log.error(e, e); } } layoutSetPrototype = LayoutSetPrototypeUtil.fetchLayoutSetPrototype( companyId, SocialOfficeConstants.LAYOUT_SET_PROTOTYPE_KEY_USER_PUBLIC); if (layoutSetPrototype != null) { try { LayoutSetPrototypeLocalServiceUtil.deleteLayoutSetPrototype(layoutSetPrototype); } catch (Exception e) { _log.error(e, e); } } try { ExpandoColumn expandoColumn = ExpandoColumnLocalServiceUtil.getColumn( companyId, LayoutSetPrototype.class.getName(), ExpandoTableConstants.DEFAULT_TABLE_NAME, SocialOfficeConstants.LAYOUT_SET_PROTOTYPE_KEY); ExpandoValueLocalServiceUtil.deleteColumnValues(expandoColumn.getColumnId()); } catch (Exception e) { _log.error(e, e); } }
protected void doAddAttributes(Document document, ExpandoBridge expandoBridge) { List<ExpandoColumn> expandoColumns = ExpandoColumnLocalServiceUtil.getDefaultTableColumns( expandoBridge.getCompanyId(), expandoBridge.getClassName()); if ((expandoColumns == null) || expandoColumns.isEmpty()) { return; } List<ExpandoColumn> indexedColumns = new ArrayList<>(); for (ExpandoColumn expandoColumn : expandoColumns) { UnicodeProperties properties = expandoColumn.getTypeSettingsProperties(); int indexType = GetterUtil.getInteger(properties.get(ExpandoColumnConstants.INDEX_TYPE)); if (indexType != ExpandoColumnConstants.INDEX_TYPE_NONE) { indexedColumns.add(expandoColumn); } } if (indexedColumns.isEmpty()) { return; } List<ExpandoValue> expandoValues = ExpandoValueLocalServiceUtil.getRowValues( expandoBridge.getCompanyId(), expandoBridge.getClassName(), ExpandoTableConstants.DEFAULT_TABLE_NAME, expandoBridge.getClassPK(), QueryUtil.ALL_POS, QueryUtil.ALL_POS); for (ExpandoColumn expandoColumn : indexedColumns) { try { addAttribute(document, expandoColumn, expandoValues); } catch (Exception e) { _log.error("Indexing " + expandoColumn.getName(), e); } } }
protected void updateMPExpandoColumns(long companyId) throws Exception { try (LoggingTimer loggingTimer = new LoggingTimer(String.valueOf(companyId))) { ExpandoTable expandoTable = null; try { expandoTable = _expandoTableLocalService.getTable(companyId, User.class.getName(), "MP"); } catch (NoSuchTableException nste) { return; } ExpandoColumn oldExpandoColumn = _expandoColumnLocalService.getColumn( companyId, User.class.getName(), expandoTable.getName(), "client-id"); if (oldExpandoColumn == null) { return; } ExpandoColumn newExpandoColumn = _expandoColumnLocalService.getColumn( companyId, User.class.getName(), expandoTable.getName(), "clientID"); if (newExpandoColumn == null) { newExpandoColumn = _expandoColumnLocalService.updateColumn( oldExpandoColumn.getColumnId(), "clientID", ExpandoColumnConstants.STRING); } List<ExpandoValue> expandoValues = _expandoValueLocalService.getColumnValues( oldExpandoColumn.getColumnId(), QueryUtil.ALL_POS, QueryUtil.ALL_POS); for (ExpandoValue expandoValue : expandoValues) { _expandoValueLocalService.addValue( expandoValue.getCompanyId(), User.class.getName(), expandoTable.getName(), newExpandoColumn.getName(), expandoValue.getClassPK(), expandoValue.getString()); } _expandoColumnLocalService.deleteColumn(oldExpandoColumn.getColumnId()); } }
protected void exportExpandoTables(PortletDataContext portletDataContext) throws Exception { Document document = SAXReaderUtil.createDocument(); Element rootElement = document.addElement("expando-tables"); Map<String, List<ExpandoColumn>> expandoColumnsMap = portletDataContext.getExpandoColumns(); for (Map.Entry<String, List<ExpandoColumn>> entry : expandoColumnsMap.entrySet()) { String className = entry.getKey(); Element expandoTableElement = rootElement.addElement("expando-table"); expandoTableElement.addAttribute("class-name", className); List<ExpandoColumn> expandoColumns = entry.getValue(); for (ExpandoColumn expandoColumn : expandoColumns) { Element expandoColumnElement = expandoTableElement.addElement("expando-column"); expandoColumnElement.addAttribute("column-id", String.valueOf(expandoColumn.getColumnId())); expandoColumnElement.addAttribute("name", expandoColumn.getName()); expandoColumnElement.addAttribute("type", String.valueOf(expandoColumn.getType())); DocUtil.add(expandoColumnElement, "default-data", expandoColumn.getDefaultData()); Element typeSettingsElement = expandoColumnElement.addElement("type-settings"); UnicodeProperties typeSettingsProperties = expandoColumn.getTypeSettingsProperties(); typeSettingsElement.addCDATA(typeSettingsProperties.toString()); } } portletDataContext.addZipEntry( ExportImportPathUtil.getRootPath(portletDataContext) + "/expando-tables.xml", document.formattedString()); }
protected void addAttribute( Document document, ExpandoColumn expandoColumn, List<ExpandoValue> expandoValues) throws PortalException { UnicodeProperties unicodeProperties = expandoColumn.getTypeSettingsProperties(); int indexType = GetterUtil.getInteger(unicodeProperties.getProperty(ExpandoColumnConstants.INDEX_TYPE)); String fieldName = encodeFieldName(expandoColumn.getName(), indexType); ExpandoValue expandoValue = new ExpandoValueImpl(); expandoValue.setColumnId(expandoColumn.getColumnId()); expandoValue.setData(expandoColumn.getDefaultData()); boolean defaultValue = true; for (ExpandoValue curExpandoValue : expandoValues) { if (curExpandoValue.getColumnId() == expandoColumn.getColumnId()) { expandoValue = curExpandoValue; defaultValue = false; break; } } int type = expandoColumn.getType(); if (type == ExpandoColumnConstants.BOOLEAN) { document.addKeyword(fieldName, expandoValue.getBoolean()); } else if (type == ExpandoColumnConstants.BOOLEAN_ARRAY) { if (!defaultValue) { document.addKeyword(fieldName, expandoValue.getBooleanArray()); } else { document.addKeyword(fieldName, new boolean[0]); } } else if (type == ExpandoColumnConstants.DATE) { document.addDate(fieldName, expandoValue.getDate()); } else if (type == ExpandoColumnConstants.DOUBLE) { document.addKeyword(fieldName, expandoValue.getDouble()); } else if (type == ExpandoColumnConstants.DOUBLE_ARRAY) { if (!defaultValue) { document.addKeyword(fieldName, expandoValue.getDoubleArray()); } else { document.addKeyword(fieldName, new double[0]); } } else if (type == ExpandoColumnConstants.FLOAT) { document.addKeyword(fieldName, expandoValue.getFloat()); } else if (type == ExpandoColumnConstants.FLOAT_ARRAY) { if (!defaultValue) { document.addKeyword(fieldName, expandoValue.getFloatArray()); } else { document.addKeyword(fieldName, new float[0]); } } else if (type == ExpandoColumnConstants.INTEGER) { document.addKeyword(fieldName, expandoValue.getInteger()); } else if (type == ExpandoColumnConstants.INTEGER_ARRAY) { if (!defaultValue) { document.addKeyword(fieldName, expandoValue.getIntegerArray()); } else { document.addKeyword(fieldName, new int[0]); } } else if (type == ExpandoColumnConstants.LONG) { document.addKeyword(fieldName, expandoValue.getLong()); } else if (type == ExpandoColumnConstants.LONG_ARRAY) { if (!defaultValue) { document.addKeyword(fieldName, expandoValue.getLongArray()); } else { document.addKeyword(fieldName, new long[0]); } } else if (type == ExpandoColumnConstants.NUMBER) { document.addKeyword(fieldName, expandoValue.getNumber().toString()); } else if (type == ExpandoColumnConstants.NUMBER_ARRAY) { if (!defaultValue) { document.addKeyword(fieldName, ArrayUtil.toStringArray(expandoValue.getNumberArray())); } else { document.addKeyword(fieldName, new long[0]); } } else if (type == ExpandoColumnConstants.SHORT) { document.addKeyword(fieldName, expandoValue.getShort()); } else if (type == ExpandoColumnConstants.SHORT_ARRAY) { if (!defaultValue) { document.addKeyword(fieldName, expandoValue.getShortArray()); } else { document.addKeyword(fieldName, new short[0]); } } else if (type == ExpandoColumnConstants.STRING) { if (indexType == ExpandoColumnConstants.INDEX_TYPE_KEYWORD) { document.addKeyword(fieldName, expandoValue.getString()); } else { document.addText(fieldName, expandoValue.getString()); } } else if (type == ExpandoColumnConstants.STRING_ARRAY) { if (!defaultValue) { if (indexType == ExpandoColumnConstants.INDEX_TYPE_KEYWORD) { document.addKeyword(fieldName, expandoValue.getStringArray()); } else { document.addText( fieldName, StringUtil.merge(expandoValue.getStringArray(), StringPool.SPACE)); } } else { if (indexType == ExpandoColumnConstants.INDEX_TYPE_KEYWORD) { document.addKeyword(fieldName, StringPool.BLANK); } else { document.addText(fieldName, StringPool.BLANK); } } } else if (type == ExpandoColumnConstants.STRING_LOCALIZED) { if (!defaultValue) { if (indexType == ExpandoColumnConstants.INDEX_TYPE_KEYWORD) { document.addLocalizedKeyword(fieldName, expandoValue.getStringMap()); } else { document.addLocalizedText(fieldName, expandoValue.getStringMap()); } } } }