Yes, sorry. I have tried removing unessesary code. The dao objects is from
the base class that is sping injected via @SpringBean


This is the class that lists the items. When clicking on a link that edits
or adds an item see ItemPage


public class ItemListPage extends BaseAdministrationPage{
        
        private List<ItemFilter> filters = new LinkedList<ItemFilter>();
        private AggregatedItem aggregatedItem;
        private WebMarkupContainer itemContainer;
        List<se.edgesoft.hairless.entities.item.Item> items = new
ArrayList<se.edgesoft.hairless.entities.item.Item>();
        
        public List<ItemFilter> getFilters() {
                return filters;
        }

        public ItemListPage(){
        
                IModel categoryModel = new LoadableDetachableModel(){
                        private static final long serialVersionUID = 1L;
                        protected Object load()
                        {
                                List<Category> categories = new 
LinkedList<Category>();
                                List<MainCategory> mainCategories =
getCategoryDao().getMainCategories();
                                for( MainCategory main : mainCategories ){
                                        categories.add( main );
                                        List<SubCategory> subCategories = 
getCategoryDao().getSubCategories(
main );
                                        for( SubCategory sub : subCategories ){
                                                categories.add( sub );
                                        }
                                }
                                
                                return categories; 
                        }
                };
                final DropDownChoice categoryChoice = new 
DropDownChoice("categories", new
Model(), categoryModel, new CategoryChoiceRenderer()){
                        private static final long serialVersionUID = 1L;
                        
                        @Override
                        protected java.lang.CharSequence getDefaultChoice(final 
Object selected){
                                return "<option value=\"0\">"+ 
getLocalizer().getString("category.choice.default", ItemListPage.this ) +
"</option>"; 
                        }
                        
                         protected boolean 
wantOnSelectionChangedNotifications() {
                                 return true;
                 }
                         
                         protected void onSelectionChanged(final Object obj ) {
                                 if( obj instanceof Category ){
                                         addFilter( new CategoryFilter( 
(Category) obj ));
                                 }else{
                                        removeFilter( CategoryFilter.class );
                                 }
                                 
                                 refreshItemView();
                 }
                };
                categoryChoice.setEscapeModelStrings(false);
                
                IModel brandsModel = new LoadableDetachableModel(){
                        private static final long serialVersionUID = 1L;
                        protected Object load()
                        {
                                return getBrandDao().getBrands();
                        }
                };
                final DropDownChoice brandChoice = new DropDownChoice("brands", 
new
Model(), brandsModel,new BrandChoiceRenderer()){
                        private static final long serialVersionUID = 1L;
                        
                        @Override
                        protected java.lang.CharSequence getDefaultChoice(final 
Object selected){
                                return "<option value=\"0\">"+ 
getLocalizer().getString("brand.choice.default", ItemListPage.this ) +
"</option>"; 
                        }
                        
                         protected boolean 
wantOnSelectionChangedNotifications() {
                                 return true;
                 }
                         
                         protected void onSelectionChanged(final Object obj ) {
                                 if( obj instanceof Brand ){
                                         addFilter( new BrandFilter( (Brand) 
obj ));
                                 }else{
                                        removeFilter( BrandFilter.class );
                                 }
                                 
                                 refreshItemView();
                 }
                };
                
                
                Form itemForm = new Form( "itemForm" );
                itemForm.add( brandChoice  );
                itemForm.add( categoryChoice  );
                add( itemForm );
                
                itemContainer = new WebMarkupContainer( "itemContainer" ){
                        private static final long serialVersionUID = 1L;

                        @Override
                public boolean isVisible(){
                                
                                if( getItems() == null ) return false;
                                
                                if( getItems().isEmpty() ) return false;
                        
                        return true;
                }
        };
                
                add( itemContainer );
                refreshItemView();
                
                 add( new Link( "addItem" ){
                                private static final long serialVersionUID = 1L;

                                @Override
                                public void onClick() {
                                        setResponsePage( new ItemPage()  );
                                }
                });
        }
        
        private void updateItems(){
                aggregatedItem = getItemDao().getAggregatedItem(getFilters());
                items = getItemDao().getItems( getFilters() );
        }
        
        public List<se.edgesoft.hairless.entities.item.Item> getItems(){
                return items;
        }
        
        private void refreshItemView(){
                updateItems();
                itemContainer.addOrReplace( new ItemFragment( "itemPanel" , 
"itemView") );
        }
        
        private final class ItemFragment extends Fragment
        {
                private static final long serialVersionUID = 0L;

                public ItemFragment( final String panel, final String id)
                {
                        super(panel, id, ItemListPage.this );
                        final DataView view = new DataView( "itemDataView",  new
ListDataProvider( getItems() ) ) {
                                private static final long serialVersionUID = 1L;

                                public void populateItem(final Item item) {
                                        final 
se.edgesoft.hairless.entities.item.Item i =
(se.edgesoft.hairless.entities.item.Item) item.getModelObject();
                                                Link itemLink = new Link( 
"itemLink" ){
                                                        private static final 
long serialVersionUID = 1L;

                                                        @Override
                                                        public void onClick() {
                                                                
setResponsePage( new ItemPage( i ) );
                                                                
                                                        }
                                                        
                                                };
                                                item.add( new Label( "id" , 
i.getId().toString() ) );
                                                itemLink.add( new Label( 
"identifier" , i.getIdentifier() ) );
                                                item.add( itemLink );
                                                item.add( new Label( 
"cachedBalance" , i.getCachedBalance().toString()
) );
                                                item.add( new Label( "value" , 
"" + i.getValue() ) );
                                                item.add( new Label( "price" , 
"" + i.getPrice() ) );
                                                item.add( new Label( 
"memberPrice" , "" + i.getMemberPrice() ) );
                    }
                };
                view.setItemsPerPage(10);
                add(view);
                add(new PagingNavigator("navigator", view));

                }
        }
        
        @SuppressWarnings( "unchecked" )
        public void removeFilter( Class clazz ){
                 Iterator<ItemFilter> iter = getFilters().iterator();
                 while( iter.hasNext() ){
                         ItemFilter filter = (ItemFilter)iter.next();
                         
                         if( clazz.equals( filter.getClass() )){
                                 iter.remove();
                                 break;
                         }
                 }
        }
        
        public void removeFilter( ItemFilter f ){
                 Iterator<ItemFilter> iter = getFilters().iterator();
                 while( iter.hasNext() ){
                         ItemFilter filter = (ItemFilter)iter.next();
                         
                         if( f.getClass().equals( filter.getClass() )){
                                 iter.remove();
                                 break;
                         }
                 }
        }
        
        public void addFilter( ItemFilter f ){
                removeFilter( f );
                getFilters().add( f );
        }

        
        public AggregatedItem getAggregatedItem() {
                return aggregatedItem;
        }
}


ItemPage

public class ItemPage extends BaseAdministrationPage {
        
        private Form itemForm;
        private Item item;
        public ItemPage(){
                this( new Item() );
        }
        
        public ItemPage( Item item ){
        
                this.item = item;
                
                IModel categoryDetachedFromCompound;
                
                if( item.getId() == null ){
                        item.setEarliestDeliveryDate( new Date() );
                        categoryDetachedFromCompound = new Model();
                }else{
                        categoryDetachedFromCompound = new Model( 
getItem().getSubCategory() );
                }

                final CSSFeedbackPanel panel = new CSSFeedbackPanel( "feedback" 
);
                panel.setOutputMarkupId(true);
                add( panel );
                
                IModel collectionModel = new LoadableDetachableModel(){
                        private static final long serialVersionUID = 1L;
                        protected Object load(){
                                return getCollectionDao().getCollections();
                        }
                };
                
                IModel colorStoryModel = new LoadableDetachableModel(){
                        private static final long serialVersionUID = 1L;
                        protected Object load(){
                                if( getItem().getCollection() != null && 
getItem().getBrand() != null ){
                                        return 
getColorStoryDao().getColorStories( getItem().getCollection() ,
getItem().getBrand());
                                }else{
                                        return Collections.EMPTY_LIST;
                                }
                        }
        };

                IModel brandsModel = new LoadableDetachableModel(){
                        private static final long serialVersionUID = 1L;
                        protected Object load(){
                                return getBrandDao().getBrands();
                        }
                };

                IModel categoryModel = new LoadableDetachableModel(){
                        private static final long serialVersionUID = 1L;
                        protected Object load(){
                                List<Category> categories = new 
LinkedList<Category>();
                                List<MainCategory> mainCategories =
getCategoryDao().getMainCategories();
                                for( MainCategory main : mainCategories ){
                                        categories.add( main );
                                        List<SubCategory> subCategories = 
getCategoryDao().getSubCategories(
main );
                                        for( SubCategory sub : subCategories ){
                                                categories.add( sub );
                                        }
                                }
                                return categories; 
                        }
                };
                
                final DropDownChoice colorStoryChoice = new 
DropDownChoice("colorStory", 
colorStoryModel, new ColorStoryChoiceRenderer()){
                        private static final long serialVersionUID = 1L;

                        @Override
                        protected java.lang.CharSequence getDefaultChoice(final 
Object selected){
                                return "<option value=\"\">"+ 
getLocalizer().getString("colorstory.choice.default", ItemPage.this ) +
"</option>"; 
                        }
                };
                colorStoryChoice.setNullValid( true );
                colorStoryChoice.setOutputMarkupId( true );
                
                final DropDownChoice collectionChoice = new 
DropDownChoice("collection", 
collectionModel, new CollectionChoiceRenderer()){
                        private static final long serialVersionUID = 1L;

                        @Override
                        protected java.lang.CharSequence getDefaultChoice(final 
Object selected){
                                return "<option value=\"\">"+ 
getLocalizer().getString("collection.choice.default", ItemPage.this ) +
"</option>"; 
                        }
                };
                collectionChoice.add(new 
AjaxFormComponentUpdatingBehavior("onchange"){
                        private static final long serialVersionUID = 1L;

                        protected void onUpdate(AjaxRequestTarget target){
                if( getItem().getCollection() != null && getItem().getBrand()
!= null ){
                         target.addComponent(colorStoryChoice);
                        
                }
            }
        });
                collectionChoice.setRequired( true );
                
                final DropDownChoice categoryChoice = new 
DropDownChoice("subCategory",
categoryDetachedFromCompound,  categoryModel, new CategoryChoiceRenderer()){
                        private static final long serialVersionUID = 1L;
                        
                        @Override
                        protected java.lang.CharSequence getDefaultChoice(final 
Object selected){
                                return "<option value=\"0\">"+ 
getLocalizer().getString("category.choice.default", ItemPage.this ) +
"</option>"; 
                        }
                };
                categoryChoice.add(new 
AjaxFormComponentUpdatingBehavior("onchange"){
                        private static final long serialVersionUID = 1L;

                        protected void onUpdate(AjaxRequestTarget target){
                                target.addComponent(panel);
                                if( ! ( categoryChoice.getModelObject() 
instanceof SubCategory ) ){
                                        info( "Please choose a subcategory" );
                                }
            }
        });
                categoryChoice.setRequired( true );
                categoryChoice.setEscapeModelStrings(false);
                
                final DropDownChoice brandChoice = new DropDownChoice("brand",
brandsModel,new BrandChoiceRenderer()){
                        private static final long serialVersionUID = 1L;
                        
                        @Override
                        protected java.lang.CharSequence getDefaultChoice(final 
Object selected){
                                return "<option value=\"0\">"+ 
getLocalizer().getString("brand.choice.default", ItemPage.this ) +
"</option>"; 
                        }
                        
                };
                brandChoice.add(new 
AjaxFormComponentUpdatingBehavior("onchange"){
                        private static final long serialVersionUID = 1L;

                        protected void onUpdate(AjaxRequestTarget target){
                if( getItem().getCollection() != null && getItem().getBrand()
!= null ){
                         target.addComponent(colorStoryChoice);
                }
            }
        });
                brandChoice.setRequired( true );
                
                TextField identifier = new TextField( "identifier" );
                identifier.add( StringValidator.lengthBetween( 1, 255));
                identifier.setRequired( true );
                
                TextField earliestDeliveryDate = new TextField( 
"earliestDeliveryDate" );
                earliestDeliveryDate.setRequired( true );
                
                TextField discount = new TextField( "discount" );
                discount.setRequired( true );
                discount.add( NumberValidator.range( 0 , 100 ));
                
                TextField memberPrice = new TextField( "memberPrice" );
                memberPrice.setRequired( true );
                
                TextField price = new TextField( "price" );
                price.setRequired( true );
                
                TextField value = new TextField( "value" );
                value.setRequired( true );
                
                CompoundPropertyModel itemModel = new CompoundPropertyModel( 
item );
                
                itemForm = new Form( "itemForm", itemModel){
                        private static final long serialVersionUID = 1L;

                        @Override
                        protected void onSubmit()
                {

                                
                                Item item = (Item) itemForm.getModelObject();
                                
                                if( ! ( categoryChoice.getModelObject() 
instanceof SubCategory ) ){
                                        info( "Please choose a subcategory" );
                                        return;
                                }
                                
                                item.setSubCategory( (SubCategory) 
categoryChoice.getModelObject() );
                                
                                if( ! item.hasGender() ){
                                        info( "You must choose at least one 
gender" );
                                        return;
                                }
                                
                                if( item.getId() == null ){
                                        item.setAddedDate( new Date() );
                                        item.setCachedBalance( new Long(0));
                                }
                                getItemDao().save( item );
                                info( "Item saved!" );
                                getPage().addOrReplace( new 
ItemFragment("itemSelectionPanel",
"itemFragment"));
                }
                };
                
                itemForm.add( colorStoryChoice  );
                itemForm.add( collectionChoice );
                itemForm.add( brandChoice ); 
                itemForm.add( categoryChoice ); 
                itemForm.add( memberPrice ); 
                itemForm.add( price ); 
                itemForm.add( value ); 
                
                itemForm.add( new CheckBox( "female" ) ); 
                itemForm.add( new CheckBox( "male" ) ); 
                itemForm.add( new CheckBox( "junior" ) );
                itemForm.add( identifier );
                itemForm.add( earliestDeliveryDate );
                itemForm.add( discount );
                add( itemForm );
                
                if( getItem().getId() != null  ){
                        add( new ItemFragment("itemSelectionPanel", 
"itemFragment"));
                }else{
                        add( new Label("itemSelectionPanel"));
                }
        }

        public Item getItem() {
                return item;
        }
        
        /**
         * Fragment for adding , editing  translation for a
         * store. 
         * The item must exists before this fragment is visible.
         * @author Mathias Nilsson
         *
         */
        private final class ItemFragment extends Fragment
        {
                private static final long serialVersionUID = 1L;
                public ItemFragment( String panel, String id ){
                        super(panel, id, ItemPage.this );
                        
                        IModel availableStoresModel = new 
LoadableDetachableModel(){
                                private static final long serialVersionUID = 1L;
                                protected Object load()
                                {
                                        return 
getStoreDao().getAvailableStores( getItem() );
                                }
                        };

                        IModel unusedStoresModel = new 
LoadableDetachableModel(){
                                private static final long serialVersionUID = 1L;
                                protected Object load()
                                {
                                        return getStoreDao().getUnusedStores( 
getItem() );
                                }
                        };
                        final DropDownChoice availableStoresChoice = new 
DropDownChoice(
"availableStores", new Model( "" ),availableStoresModel, new
StoreChoiceRenderer()){
                                private static final long serialVersionUID = 1L;
                                
                                @Override
                                protected java.lang.CharSequence 
getDefaultChoice(final Object
selected){
                                        return "<option value=\"\">--- Edit 
item for store ---</option>"; 
                                }
                                 protected boolean 
wantOnSelectionChangedNotifications() {
                                         
                                         return true;
                         }
                                 
                                 protected void onSelectionChanged(final Object 
obj ) {
                                         if( obj instanceof Store ){
                                                 Store store = (Store) obj;
                                                setResponsePage(  new 
ItemStorePage( getItem(), store ) );
                                         }
                         }
                                 
                                 @Override
                                 public boolean isVisible(){
                                         if( getChoices().size() > 0 ){
                                                 return true;
                                         }
                                         return false;
                                 }
                        };
                        final DropDownChoice unusedStoresChoice = new 
DropDownChoice(
"unusedStores", new Model( "" ),unusedStoresModel, new
StoreChoiceRenderer()){
                                private static final long serialVersionUID = 1L;
                                
                                @Override
                                protected java.lang.CharSequence 
getDefaultChoice(final Object
selected){
                                        return "<option value=\"\">--- New item 
for store ---</option>"; 
                                }
                                 protected boolean 
wantOnSelectionChangedNotifications() {
                                         
                                         return true;
                         }
                                 
                                 protected void onSelectionChanged(final Object 
obj ) {
                                         if( obj instanceof Store ){
                                                 Store store = (Store) obj;
                                                 setResponsePage(  new 
ItemStorePage( getItem(), store ) );
                                         }
                         }
                                 
                                 @Override
                                 public boolean isVisible(){
                                         if( getChoices().size() > 0 ){
                                                 return true;
                                         }
                                         return false;
                                 }
                                 
                        };
                        
                        
                        final IModel elementModel = new 
LoadableDetachableModel(){
                                private static final long serialVersionUID = 1L;
                                protected Object load()
                                {
                                        return getCategoryDao().getElements( 
getItem().getSubCategory() );
                                }
                        };
                        
                        
                        Form itemStoreForm = new Form( "itemStoreForm" );
                        itemStoreForm.add( availableStoresChoice );
                        itemStoreForm.add( unusedStoresChoice );
                        
                        Link attributeLink = new Link( "attributeLink" ){

                                @Override
                                public void onClick() {
                                        setResponsePage( new AttributePage( 
getItem() ) );
                                }
                                
                                @Override
                                public boolean isVisible(){
                                        List<Element> elements = (List<Element> 
)elementModel.getObject();
                                        if( elements == null || elements.size() 
== 0 ){
                                                return false;
                                        }
                                        
                                        return true;
                                }
                                
                        };
                        itemStoreForm.add( attributeLink );
                        add( itemStoreForm );
                        
                }
                
        }
}

And when adding translation to the item I get lazy loading exception
public class ItemStorePage extends BaseAdministrationPage {
        
        private Item item;
        private Store store;
        private ItemTranslation itemTranslation;
        

        public ItemStorePage( Item item, Store store ){
                this.item = item;
                this.store = store;
                
                initiateTranslation();
        

                final FeedbackPanel panel = new FeedbackPanel( "feedback" );
                panel.setOutputMarkupId(true);
                add( panel );
                
        

                Form itemForm = new Form( "itemForm", new CompoundPropertyModel(
getItemTranslation()) ){
                        private static final long serialVersionUID = 1L;

                        @Override
                        protected void onSubmit()
                {
                                if( getItemTranslation().getId() == null ){
                                        /**
                                         * Add Item to stort
                                         */
                                        
                                        //getItem().addStore( getStore() );
                                        
                                        List<Store> stores = new 
LinkedList<Store>();
                                        stores.add( getStore() );
                                        getItem().setStores( stores );
                                        
                                        getItemDao().save( getItem() );
                                }
                                getTranslationDao().save(  
getItemTranslation(), getItem() );
                                info( "Item updated!" );
                                
                }
                };
                
                /** Adding data for translation */
                
                
                
                TextArea shortDescription = new TextArea( "shortDescription" );
                TextArea longDescription = new TextArea( "longDescription" );
                TextField name = new TextField( "name" );
                shortDescription.add( StringValidator.lengthBetween( 1, 500 ));
                shortDescription.setRequired( true );
                longDescription.add( StringValidator.lengthBetween( 1, 1000 ));
                longDescription.setRequired( true );
                name.add( StringValidator.lengthBetween( 1, 255 ));
                name.setRequired( true );
                itemForm.add( shortDescription );
                itemForm.add( longDescription );
                itemForm.add( name );
                add( itemForm );
                
                add( new Label( "itemId", getItem().getId().toString() ));
        }

        
        
        public void initiateTranslation(){


                itemTranslation = getTranslationDao().getTranslation( 
getStore(), getItem(
));
                
                if( itemTranslation == null ){
                        itemTranslation = new ItemTranslation();
                        itemTranslation.setItem( getItem() );
                        itemTranslation.setStore( store );
                }
                
        }
        
        public Item getItem() {
                return item;
        }

        public Store getStore() {
                return store;
        }

        public ItemTranslation getItemTranslation() {
                return itemTranslation;
        }
}


-- 
View this message in context: 
http://www.nabble.com/How-to-avoid-Lazy-loading-exception-tp17040941p17065528.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to